使用CMake 构建项目记录一

一:
构建一个单独的项目:

https://blog.csdn.net/shuyong1999/article/details/7108563

主目录下的CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
PROJECT(HELLO)
ADD_SUBDIRECTORY(src)

需要注意的问题:


src 目录下的 CMakeLists.txt
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
ADD_EXECUTABLE(hello test.cpp Hello.cpp)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
ADD_LIBRARY(hello_so  SHARED Hello.cpp)
SET_TARGET_PROPERTIES(hello_so PROPERTIES OUTPUT_NAME "hello")
ADD_LIBRARY(hello_a STATIC Hello.cpp)
SET_TARGET_PROPERTIES(hello_a PROPERTIES OUTPUT_NAME "hello")
使用时需要利用ADD_LIBRARY 添加成hello_so 或者 hello_a ,再利用set_target_properties 控制生成hello.so和hello.a
并存。

EXECUTABLE_OUTPUT_PATH 执行文件的路径
LIBRARY_OUTPUT_PATH    库文件的路径
PROJECT_SOURCE_DIR     项目层的路径


二.  构建多个项目,使用外部项目提供的库文件

 
#显示环境变量的值 MESSAGE(STATUS $ENV{HOME})# 指定头文件查找目录 # 注意,这里指定绝对路径。 INCLUDE_DIRECTORIES(/home/lei/cmake_test_project/single_project/include)# 指定库文件查找目录(不能只指定头文件,也需要连接到库文件) # 注意,这里指定绝对路径, 也可通过设置系统环境变量LD_LIBRARY_PATH来指定。 LINK_DIRECTORIES(/home/lei/cmake_test_project/single_project/lib)# 生成可执行文件到项目的bin目录 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)ADD_EXECUTABLE(main main.cpp)# 制定链接的外部Lib TARGET_LINK_LIBRARIES(main libhello.a)#/home/lei/cmake_test_project/single_project

  MESSAGE(STATUS $ENV{HOME}) 可以用来输出环境信息

三.  使用自定义的cmake 模块

https://blog.csdn.net/shuyong1999/article/details/7108563


四、 cmake 常用的命令

https://blog.csdn.net/elloop/article/details/51127416

五、常用的函数

aux_source_directory 查找在某个路径下的所有源文件。

aux_source_directory(< dir > < variable >)

  搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中。该命令主要用在那些使用显式模板实例化的工程上。模板实例化文件可以存储在Templates子目录下,然后可以使用这条命令自动收集起来;这样可以避免手工罗列所有的实例。

  使用该命令来避免为一个库或可执行目标写源文件的清单,是非常具有吸引力的。但是如果该命令貌似可以发挥作用,那么CMake就不需要生成一个感知新的源文件何时被加进来的构建系统了(也就是说,新文件的加入,并不会导致CMakeLists.txt过时,从而不能引起CMake重新运行。——译注)。正常情况下,生成的构建系统能够感知它何时需要重新运行CMake,因为需要修改CMakeLists.txt来引入一个新的源文件。当源文件仅仅是加到了该路径下,但是没有修改这个CMakeLists.txt文件,使用者只能手动重新运行CMake来产生一个包含这个新文件的构建系统。

六 、参考的博客
http://blog.sina.com.cn/s/blog_627927570102vq28.html




 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值