CMake管理工程项目之基础语句

1. CMake简介:

CMake的特点是:

  • Cmake需要用户用CMake规范的语法编写CMake的脚本,而CMake的脚本语法简单易用,入门非常容易
  • 原生支持C/C++/Fortan/Java的相依性的自动分析功能,免除了程序员对代码依赖的调整,对整个工程项目的构建非常有帮助。
  • 支持QT、FLTK等开发框架。
  • 支持跨平台编译,并可以生成native编译配置文件,在linux/unix平台,生产makefile,在mac平台可以生成xcode,在windows平台可以生成msvc工程的配置文件。
  • 能够管理大型项目,效率非常高。
  • 可以扩展,可为cmake编写特定功能的模块,扩充cmake功能。

2. CMake常用语句摘录:

掌握CMake还是从一个较为完整的工程项目的CMake来分析比较实用,也具有针对性。

以下摘录的是一个中型项目工程的CMakeLists.txt的关键语句。在由CMake构建工程项目时,需要在每一级目录都编写管理对应级目录内的资源文件。最主要的CMakeLists.txt有两级,最外层的和存放工程源代码的Source目录下的CMakeLists.txt。

最外层的CMakeLists.txt一般会定义一些全局的变量,供之后Source目录中,需要涉及到整个项目的Bin,Lib,Include,Thirdprty,CommonInclude等时用到的全局变量,还有就是指定需要包含的Thirdparty的bin的存放目录。通过在CMakeList中进行定义,可以省去在CMake GUI里进行手动设置的操作。

2.1 外层CMakeLists.txt的一般语句:

(1) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)

(2) PROJECT( Project Name )

(3)

SET(PLATFORM_NAME “${PlatformName}”)

SET(CONFIGURATION_NAME “${ConfigurationName}”)

(4)

FIND_PATH(QT_DIR “” “” NO_DEFAULT_PATH)

SET(CMAKE_PREFIX_PATH “${QT_DIR}”)

FIND_PATH(VTK_DIR “” ”” NO_DEFAULT_PATH)

SET(VTK_DIR “${CMAKE_CURRENT_SOURCE_DIR}/Thirdparty/${PLATFORM_NAME}/VTK”)

FIND_PATH(DCMTK_DIR “” ”” NO_DEFAULT_PATH)

SET(DCMTK_DIR “${CMAKE_CURRENT_SOURCE_DIR}/Thirdparty/${PLATFORM_NAME}/DCMTK”)

-------------------------------------------------------------------------------------------------------------------------------

SET(Project_Include “${CMAKE_CURRENT_SOURCE_DIR}/Include”)

SET(Project_Bin “${CMAKE_CURRENT_SOURCE_DIR}/Bin/&{PLATFORM_NAME}”)

SET(Project_Lib “${CMAKE_CURRENT_SOURCE_DIR}/Lib/&{PLATFORM_NAME}”)

--------------------------------------------------------------------------------------------------------------------------------

ADD_SUBDIRECTORY(Directory Name)

ADD_DEPENDENCIES(ProjectNameTest

ProjectName)

2.2 Source级目录内的CMakeLists.txt的一般语句:

(1)SET(CMAKE_AUTOMOC ON)

(2)

SET(file_SourceFiles

Main.cpp

Source1.cpp

Source2.cpp

)

SOURCE_GROUP(“Source Files” FILES ${file_SourceFiles})

SET(file_HeaderFiles

${Project_Include}/headerFile1.h

${Project_Include}/headerFile2.h

)

SOURCE_GROUP(“Header Files” FILES ${file_HeaderFiles})

SET(srcs ${file_SourceFiles} ${file_HeaderFiles})

SET(moc_headers

${Project_Include}/mocFile1.h

${Project_Include}/mocFile2.h

)

SOURCE_GROUP(“Generated Files” FILES ${MOCSrcs})

(3)

INCLUDE_DIRECTORIES(

   ${Project_Include}

${VTK_DIR}/include/vtk-6.1

${DCMTK_DIR}/include

)

LINK_DIRECTORIES(

${Project_Lib}

${VTK_DIR}/lib/${CONFIGURATION_NAME}

${DCMTK_DIR}/lib/${CONFIGURATION_NAME}

}

(4)

ADD_LIBRARY(ProjectName SHARED ${srcs} ${headers} ${MOCSrcs})

ADD_EXECUTABLE(ProjectNameApp WIN32 ${srcs} ${headers} ${MOCSrcs})

(5)

SET_TARGET_PROPERTIES( ProjectName

PROPERTIES

RUNTIME_OUTPUT_DIRECTORY ${Project_Bin}

ARCHIVE_OUTPUT_DIRECTORY ${Project_Lib}

)

(6)

Qt5_use_modules(ProjectName Core Widgets Xml)

(7)

TARGET_LINK_LIBRARIES(ProjectName

vtkImagingGeneral-6.1

vtkCommonCore-6.1

vtkRenderingCore-6.1

)

3. 关于CMakeLists.txt相关语句解释及注意事项

Todo: 近期更新补上。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值