CMake常用命令
1. 基础命令
- SET: 设置变量
-
MESSAGE: 输出信息
- INCLUDE_DIRECTORIES:
添加头文件目录(类似VC的附加包含目录),如:include_directories(“D:\Qt\Qt5.6.1\5.6\msvc2015_64\include”) - LINK_DIRECTORIES: 添加库文件目录(类似VC的附加库目录),如:link_directories(directory1 directory2 …)
- LINK_LIBRARIES: 添加需要链接的库文件路径,(注意是全路径,类似VC的附加依赖项),如:LINK_LIBRARIES(“D:\Qt\Qt5.6.1\5.6\msvc2015_64\lib\Qt5Widgetsd.lib”)
- TARGET_LINK_LIBRARIES:
链接的目标库名称,
语法:TARGET_LINK_LIBRARIES(targetlibrary1 <debug | optimized> library2 ..)
如:TARGET_LINK_LIBRARIES(myProject hello)
注: LINK_LIBRARIES 和TARGET_LINK_LIBRARIES 都可以链接库文件。 区别: TARGET_LINK_LIBRARIES 用于指定特定项目 LINK_LIBRARIES ( todo 之后的所有项目?)
- add_library:
生成动态/静态库文件,如: add_library(archive SHARED archive.cpp zip.cpp lzma.cpp) add_library(archive STATIC archive.cpp zip.cpp lzma.cpp) - add_executable: 生成可执行文件
2. 高级命令
-
add_subdirectory: 为构建添加一个子路径
- 统一设置输出目录:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin)
以上三行命令要写在根(root)CmakeLists.txt的里面.3. 杂项
- CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2) :CMake版本依赖
4. 其他举例:
4.1 判断64,32 平台变量
if(NOT PLATFORM)
if(CMAKE_SIZEOF_VOID_P MATCHES 8)
set(PLATFORM 64)
else()
set(PLATFORM 32)
endif()
endif()
4.2 添加预定义宏
add_definitions(-DUSE_DEBUG) 定义USE_DEBUG宏
4.3 文件拷贝
file(COPY “${CMAKE_BINARY_DIR}/Magick++/lib/Magick++.h”
46 DESTINATION “${CMAKE_BINARY_DIR}/include” )