有的时候,我们需要在同一解决方案下管理多个项目,如果通过VS将项目一个一个添加,这项工作将变得十分繁琐。举例来讲,拿服务端和客户端的SOCKET通信来说,服务端和客户端两部分代码应作为两个单独的项目进行编译,而为了在同一解决方案下对这两个(或多个)项目进行管理,此时便可以借助CMake来帮助我们高效完成这项任务。
如上图所示,在ServerAndClient这个项目文件夹中包含了Client和Server两个文件夹,里面存放了欲要生成项目的头文件和cpp,在这两个项目文件夹中,我们需要编写CMakeLists文件。(可以直接新建一个txt文本,然后用编辑器编辑)
代码如下
CMakeList.txt :
#生成的子项目名称
project (MyServer)
#搜索对应的头文件 并存储在 HEADER_FILES变量中
file(GLOB HEADER_FILES ./*.h)
#搜索对应的CPP文件 并存储在 SRC_FILES_FILES变量中
file(GLOB_RECURSE SRC_FILES ./*.cpp)
#将之前找到的文件导入到项目中,指定生成的文件类型 (.exe)
add_executable (${PROJECT_NAME} ${HEADER_FILES} ${SRC_FILES})
project (MyClient)
file(GLOB HEADER_FILES ./*.h)
file(GLOB_RECURSE SRC_FILES ./*.cpp)
add_executable (${PROJECT_NAME} ${HEADER_FILES} ${SRC_FILES})
以上是保存在欲要生成项目的根目录下的CMakeList文件。
完成上述工作后,需要回到解决方案目录,即ServerAndClient文件夹下,对解决方案结构进行设计。
代码如下:
CMakeList:
#对CMake版本进行限制
cmake_minimum_required(VERSION 3.15)
#设置解决方案名称
project(MyClientAndServer)
#添加子目录 - 即MyClient和MyServer两个项目录
# - 参数1 是用来指定需要索引的源文件目录
# - 参数2 用来指定项目的名称
add_subdirectory(Client MyClient)
add_subdirectory(Server MyServer)
大功告成,在这里我们便完成了对同一解决方案下的多项目结构设置,后面只需要用CMake来一键生成.sln文件~
标签:FILES,SRC,CMake,项目,项目管理,解决方案,HEADER From: https://www.cnblogs.com/MaxTsang/p/17354240.html