基本说明


CMakeLists.txt命令


cmake_minimum_required(VERSION var)

必要项,将var替换成某个CMake版本,指定构建所需的最低CMake版本。


project(var)

必要项,项目名称,无具体影响。


add_executable(target var1 var2 ...)

必要项,添加编译后生成的可执行文件,target是可执行文件名,var1及其后的是与该可执行文件相关的源文件。

例:add_executable(a.out main.cpp)


aux_source_directory(dir var)

把dir目录下的所有源文件都添加到名为var的变量中(只能添加一个目录,且是直属于该目录的源文件,目录的下级目录中的源文件并不会被添加到变量),方便对该目录下的大量源文件进行引用。(引用变量方法:${var}
(注意!是只添加源文件,就是“.c”或者“.cpp”这种,不会包含“.h”这种头文件)

例:

1
2
3
aux_source_directory(dir var)

add_executable(a.out ${var})


set()

set(var source1 source2 source3 ...)

aux_source_directory虽然能把某个目录下的所有源文件添加进变量中,但是有时候会把很多不用的源文件也添加进去。
这时候就可以用到set,set能把指定的源文件添加到var变量中。(引用变量方法:${var}
(注意!set同样只是只添加源文件,就是“.c”或者“.cpp”这种,不会包含“.h”这种头文件)

例:

1
2
3
set(sources ./sources/func1.c ./sources/func2.c)

add_executable(a.out ${sources})

set(EXECUTABLE_OUTPUT_PATH dir)

EXECUTABLE_OUTPUT_PATH是set的一个预定义变量可以用来指定可执行文件的输出路径,dir是自定义路径。


include_directories(dir1 dir2 dir3 ...)

aux_source_directory和set只能添加源文件到变量中,而include_directories就是添加头文件搜索目录的。(是添加目录,不是文件)

例:include_directories(./heads)


target_compile_options(target PRIVATE your_options)

可以用来指定对应的target目标文件编译时需添加的选项your_options。