cmake
-
set的变量可以在程序中的宏中使用
-
add_library.
- shared:生成.so或.dll文件,不嵌入代码,在使用时会根据.h来进行查找
- static:直接将相关代码嵌入任何需要的地方,非常冗余,但很完整
- interface:接口库,不单独生成库,只是作为接口给其他库使用
后面只跟随相关源文件
-
target_link_libraries,属性一般与target_include_directories保持一致
- 如果是public,则这个库可以被该库和依赖于该库的其他所有的使用
- 如果是private,则只能被当前这个文件夹的其他文件所使用,在这种情况下也就不用提供头文件
- 如果是interface,则当前文件夹不使用,但可以被其他的使用,一般用于设定一些设置或者全是头文件的情况下,或者该文件夹下不互相调用
-
target_include_directories(要被连接到的库 方式 库)(指定头文件)
- private:自身要include,依赖于该库的不需要include这些
- public:自身要include,依赖于该库的需要include这些
- interface:自身不要include,依赖于该库的需要include这些
-
add_subdirectory(…)
生成的时候会按这个顺序,但是编译的时候则不会,会根据依赖的关系
添加子文件夹,并处理子文件夹中的cmakelists,但是cmake中的依赖关系并不是上依赖于下的,也可以下依赖于上,也就是library是可以被子文件夹所使用的,一切看target_link_library。
-
if(…)
elseif(…)
endif()
matches即=
-
option(name description default)
和set差不多,但是可以在cmake的option中直接调整
-
include(某个cmake文件)相当于将该文件中的内容复制过来
-
add_custom_command相当于用命令行运行某条命令
output
command
depends
cmake
https://lhish.github.io/project/cmake/