1.include
https://blog.csdn.net/qq_38410730/article/details/102677143
CmakeLists.txt
才是cmake
的正统文件,而.cmake
文件是一个模块文件,可以被include
到CMakeLists.txt
中。
include指令一般用于语句的复用,也就是说,如果有一些语句需要在很多CMakeLists.txt文件中使用,为避免重复编写,可以将其写在.cmake文件中,然后在需要的CMakeLists.txt文件中进行include操作就行了。
include(file|module)
.cmake文件里包含了一些cmake命令和一些宏/函数,当CMakeLists.txt包含该.cmake文件时,当编译运行时,该.cmake里的一些命令就会在该包含处得到执行,并且在包含以后的地方能够调用该.cmake里的一些宏和函数。
之后有机会再了解什么事宏和函数。
2.protobuf_generate_cpp
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto)
将foo.proto文件生成源码,使用PROTO_SRC,PROTO_HARS变量分别指代生成的cpp和h文件并可用于连接到target和设置include。
要求protobuf_generate_cpp命令和生成add_executable() 或 add_library() 的命令必须在同一个CMakeList中.
3.file命令
https://www.cnblogs.com/fnlingnzb-learner/p/7221648.html
file(GLOB variable [RELATIVE path] [globbingexpressions]...)
GLOB 会产生一个由所有匹配globbing表达式的文件组成的列表,并将其保存到变量中。(relative path这个好像不常用?可以忽略。如果指定了RELATIVE 标记,返回的结果将是与指定的路径相对的路径构成的列表。)
如果没有写正则表达式,那么什么文件都匹配不到。例子:
file(GLOB files *) foreach(file IN LISTS files) message(STATUS ${file}) endforeach(file)
这段代码的意思是挑选出当前文件下的所有文件,然后打印。