CMake学习总结 一

#CMake学习总结 一
#============================单个目录,单个源文件========================================#假如说一个工程只有一个main.cc文件,为其编写CMakeLists.txt文件,且保存在与main.cc源文件相同的目录,则txt文件中内容如下:

#CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

#项目信息
projet (Demo1)

#指定生成目标文件
add_executable(Demo main.cc)

#======================================================================================#

#===============================单个目录,多个源文件======================================#假如说一个工程有main.cc、MathFunctions.cc、MathFunctions.h等文件,为其编写CMakeLists.txt文件,且保存在与main.cc等源文件相同的目录,则txt文件中内容如下:

#CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

#项目信息
projet (Demo2)

#查找当前目录下所有源文件,并将名称保存到指定变量
aux_source_dirextory(. DIR_SRCS)

#指定生成目标文件
add_executable(Demo ${DIR_SRCS})

#=====================================================================================#

#===============================多个目录,多个源文件=====================================#

假如说一个工程有main.cc、MathFunctions.cc、MathFunctions.h等文件且MathFunctions.cc和MathFunctions.h在子目录math中,为其编写CMakeLists.txt文件,则根目录下的txt文件内容如下:

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo3)
# 查找当前目录下的所有源文件并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 添加 math 子目录
add_subdirectory(math)
# 指定生成目标 
add_executable(Demo main.cc)
# 添加链接库
target_link_libraries(Demo MathFunctions)

#***********************************************************************#

子目录math下的文件编译为静态库调用,txt文件为:
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库
add_library (MathFunctions ${DIR_LIB_SRCS})

#====================================================================================#

#***********************************************************************#

语法解析:
  

 cmake_minimum_required:指定运行此配置文件所需的CMake的最低版本
    project:参数值是Demo1,表示项目的名称是Demo1
    add_executable:将名为main.cc的源文件编译成一个名称为Demo的可执行文件
    aux_source_dirextory(<dir> <variable>):查找指定目录下的所有源文件,然后将结构存进指定变量名DIR_SRCS
    add_subdirectory(path):指明本项目包含一个子目录,在执行根目录时子目录下的txt文件也会被执行
    target_link_libraries():可执行文件需要连接一个指定的链接库
    add_library():将源文件编译为静态链接库

#***********************************************************************#

编译项目:
    1、进入源文件所在的目录
    2、执行cmake .
    3、获得Makefile
    4、执行make命令,获得目标文件,此处为Demo
    5、执行可执行目标文件

猜你喜欢

转载自blog.csdn.net/Poetry_And_Distance/article/details/81224660