CMake常用命令总结

2018/02/08 CMake

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” )

4.4 递归获取目录下的所有 cpp

Search

    Table of Contents