变量
参数
命令行
- 指定生成器
cmake -G "Ninja"
- 添加变量
cmake -DANROID
- 删除
CMakeCache.txt
变量
cmake -UANDROID
CMakeList
-
环境变量:
$ENV{PATH}
-
编译选项
CMAKE_CXX_FLAGS
- 为不同的目标文件设置不同编译选项:stackoverflow
add_executable(project1 myfile.cpp)
set_target_properties(project1 PROPERTIES COMPILE_FLAGS "flags1")
add_executable(project2 myfile.cpp)
set_target_properties(project2 PROPERTIES COMPILE_FLAGS "flags2")
-
链接器选项
target_link_libraries
: 直接在后面添加-l{library_name}
(如-lgmp
)
-
输出目录
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
CMAKE_LIBRARY_OUTPUT_DIRECTORY
LIBRARY_OUTPUT_DIRECTORY
CMAKE_RUNTIME_OUTPUT_DIRECTORY
GUI的参数导出
在对应目录的CMakeCache.txt
中查找
函数
add_custom_command
TODO
execute_process
execute_process(COMMAND <cmd1> [args1...]]
[COMMAND <cmd2> [args2...] [...]]
[WORKING_DIRECTORY <directory>]
[TIMEOUT <seconds>]
[RESULT_VARIABLE <variable>]
[OUTPUT_VARIABLE <variable>]
[ERROR_VARIABLE <variable>]
[INPUT_FILE <file>]
[OUTPUT_FILE <file>]
[ERROR_FILE <file>]
[OUTPUT_QUIET]
[ERROR_QUIET]
[OUTPUT_STRIP_TRAILING_WHITESPACE]
[ERROR_STRIP_TRAILING_WHITESPACE])
aux_source_directory
aux_source_directory(
dir variable
)
添加dir
下所有源文件(c
/cpp
)至variable
add_library
add_library(
# 1
lib_name
# 2
STATIC | SHARED | MODULE
# 3
# 4
source.cpp
source.h)
- 库名
- 库文件类型
- TODO
- 源文件
link_directories
TODO
target_link_libraries
target_link_libraries(
# 1
target
# 2
liba
libb
# 3
)
- 通过
add_executable
和add_library
生成的目标文件 - 库文件,无后缀名
- TODO
find_library
TODO
find_package
对于要查找的package,名为package
- 先要设置路径:
set(package_DIR 路径)
- 然后进行查找
find_package (package REQUIRED)
- 找到的lib将存放在
package_LIBS
中
include_directories
include_directories(
# 1
./dir1
./dir2
# 2
)
- 添加头文件目录
- TODO
add_executable
# 1
target
# 2
# 3
# 4
source.cpp
source.h
- 目标文件
- TODO
- TODO
- 源文件
调试
cmake --debug-output
cmake --trace