最近将项目迁移到CMake进行管理,对CMake进行了一些研究,觉得有一些命令非常实用但很少有资料提到,在这里做一个总结,至于太普通常用的命令就不提了。
OPTION(OPTION_VAR “Description” [initial value]):用于管理编译选项,定义并初始化自定义变量。
例:
OPTION(BUILD_TEST "Build the test project" ON)
FIND_PATH(<VAR> name path1 path2):查找包含path1,path2的路径,可以在CMake界面中手动设置。可以用来设置包含库或者头文件的路径。
例:
FIND_PATH(LIB_INCLUDE_DIR Test)
FIND_LIBRARY(<VAR> name path1 path2 …):与FIND_PATH相似,需要得到指定文件路径。
FILE(GLOB variable [RELATIVE path] [globbing expressions]...):文件的基本操作,可用于查找指定目录中所有指定格式的文件,省去很多手动Set的麻烦。
例:
FILE(GLOB HEAD_Files “{CMAKE_SOURCE_DIR}/*.h”)
ADD_SUBDIRECTORY(src_dir [binary_dir] [EXCLUDE_FROM_ALL]):向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制的存放位置。
例:
ADD_SUBDIRECTORY(Common)
INSTALL(TARGETS targets... [EXPORT <export-name>] [...]):指定在安装时要运行的规则。可用于运行文件或者库文件的安装和复制。
例:
INSTALL(TARGETS main DESTINATION “../lib/main.cpp”) INSTALL(FILES ${HEAD_Files} DESTINATION "../lib/include")
当工程中包含子目录时,设置子目录工程的dll或者lib的生成目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR})