CMake管理工程项目之基础语句
2014-10-28 23:43
260 查看
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: 近期更新补上。相关文章推荐
- 项目管理与软件工程基础—软件生命周期(SDLC)
- 供电公司业扩工程项目管理(原创)
- "施工企业信息化应用之路" 及“工程承包项目管理软件”(第二届全国工程建设行业信息化高峰论坛讲稿)
- 在一个项目中管理好基础架构和开发团队
- 在一个项目中管理好基础架构和开发团队
- 如何提高工程项目管理效益水平
- 工程建设项目管理信息系统
- 工程建设项目综合信息管理系统
- 在一个项目中管理好基础架构和开发团队
- 在一个项目中管理好基础架构和开发团队
- 在一个项目中管理好基础架构和开发团队
- 电力企业工程项目信息化管理
- 工程项目管理信息化领域中的形式化方法应用
- 项目和项目管理基础知识
- 在一个项目中管理好基础架构和开发团队
- 在一个项目中管理好基础架构和开发团队
- 微软资深经理人的项目管理经验 第一章.有效团队的基础
- 开始学习[工程项目管理]一书中...
- 基础平台管理系统(FrameWork) 0.9.0 Beta (开源项目)
- 评"软件工程项目管理:功能点分析方法与实践"