[CMake笔记] CMake向解决方案添加源文件兼头文件(转)

回顾

在上一篇笔记里总结的时候说到,aux_source_directory这个函数在添加源码文件时,是不会把头文件添加进去的,这里就介经一下另外一个方法,也是我一直使用的。

添加文件*.cpp与*.h

文件夹结构

CMakeFile
  |--CMakeLists.txt
  |--main.cpp
  |--stdafx.h

CMakeLists.txt

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

# 项目名称
project(CMakeFile)

# 查找指定目录下的所有.cpp与.h文件 并存放到指定变量名SC_FILES中
FILE(GLOB SC_FILES "*.cpp" "*.h")

# 指定生成目标
add_executable(${PROJECT_NAME} ${SC_FILES})

生成解决方案

 进阶

很多时候,从第三方获取一些功能的源码文件,直接的做法可以放在我们自己的代码文件夹,像上面这样直接引入,但个人觉得这样不利于管理这些文件,特别是某些外部源码文件特别多的时候,就会觉得整个文件夹太多文件了, 很乱。我比较按功能,分放在不同的文件夹下进行管理,如下面我引入md5的相关代码(github就有):

文件夹结构

CMakeFile
  |--common
  |  |--md5
  |     |--md5.cpp
  |     |--md5.h
  |--CMakeLists.txt
  |--main.cpp
  |--stdafx.h

修改CMakeLists.txt

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

# 项目名称
project(CMakeFile)

# 设置md5代码文件的路径
set(MD5_FILE "./common/md5/md5.cpp" "./common/md5/md5.h")

# 查找指定目录下的所有.cpp与.h文件 并存放到指定变量名SC_FILES中
FILE(GLOB SC_FILES "*.cpp" "*.h")

# 指定生成目标
add_executable(${PROJECT_NAME} ${SC_FILES} ${MD5_FILE})

此处需要设置一个代码文件对应的路径,最后一定要把路径的值添加到生成目标上。

解决方案生成后

这里,就会发现一个问题,md5的代码文件是已经实现分文件夹存放管理了,但在解决方案里还不是分组的哦,我的强迫症又要犯了。

再进阶,解决方案源码分组

为了解决上面的问题,治愈我的强迫症,我再去看了看CMake的手册。原来此时只要在CMakeLists.txt添加一行脚本,调用一个source_group函数就行了:

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

# 项目名称
project(CMakeFile)

# 设置md5代码文件的路径
set(MD5_FILE "./common/md5/md5.cpp" "./common/md5/md5.h")

# 查找指定目录下的所有.cpp与.h文件 并存放到指定变量名SC_FILES中
FILE(GLOB SC_FILES "*.cpp" "*.h")

# 对md5的源码分组到md5组里
source_group(md5 FILES ${MD5_FILE})

# 指定生成目标
add_executable(${PROJECT_NAME} ${SC_FILES} ${MD5_FILE})

解决方案再生成后

 

这里需要注意的是,对CMakeList.txt的其他修改在重新生成后,VS都会提示重新加载解决方案的,但调用source_group函数时,解决方案是不会自动加载的,需要关闭VS重新打开项目。

转自:https://www.cnblogs.com/dilex/p/11102152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值