添加子目录
add_subdirectory(dir)
添加指定目录下可识别的源码文件到变量
aux_source_directory(path _SRC)
过滤部分文件
list(REMOVE_ITEM _SRC file1 file2 ...)
复制文件
configure_file(src_file dst COPYONLY)
添加可执行文件
add_executable(target file1 file2 ...)
如果只是定义目标,暂时不包含源文件可以这样定义:add_executable(target "")
添加动态库
add_library(libname SHARED ${LIB_SRC})
添加静态库
add_library(libname STATIC ${LIB_SRC})
添加头文件目录
INCLUDE_DIRECTORIES()
添加链接目录
link_directories(dir1 dir2 dir3 ...)
设置链接库
target_link_libraries(target library1 <debug | optimized> library2 ...)
设置目标输出名称(需要写在ADD_xxx后面)
SET_TARGET_PROPERTIES(target PROPERTIES OUTPUT_NAME new_name)
设置构建时不清理已有目标
SET_TARGET_PROPERTIES(target PROPERTIES CLEAN_DIRECT_OUTPUT 1)
添加宏
add_definitions(-Dxxx -Dxxx)
设置编译选项
add_compile_options
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
为指定目标设置编译选项
SET_TARGET_PROPERTIES(target PROPERTIES COMPILE_FLAGS "-Dxxx -fxxx")
使能汇编
ENABLE_LANGUAGE( ASM)
交叉编译
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /opt/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /opt/arm-linux-g++)
设置链接脚本
set_target_properties(${TARGET_NAME} PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT})
常用环境变量
工程顶层目录
PROJECT_SOURCE_DIR
编译目录
CMAKE_BINARY_DIR
当前CMakeLists.txt所在目录
CMAKE_CURRENT_LIST_DIR