前言
C/C++项目中,只允许有一个main函数,不方便进行单元测试,也不方便使用一个项目记录学习;但是cmake却可以解决这个问题;
默认情况下,CMakeLists.txt 只有一个 add_executable
cmake_minimum_required(VERSION 3.23)
project(untitled)
set(CMAKE_CXX_STANDARD 14)
add_executable(untitled main.cpp)
第一种方案:添加多个 add_executable
添加多个 add_executable确实能解决问题,但这些都需要自己手动添加,很不方便,而且第一个参数不能重复;如下
cmake_minimum_required(VERSION 3.23)
project(untitled)
set(CMAKE_CXX_STANDARD 14)
# untitled 不能和其他的add_executable重复
add_executable(untitled main.cpp)
add_executable(untitled1 main1.cpp)
add_executable(untitled2 main2.cpp)
其中注意 GLOB files ,根据具体 cpp 文件路径修改,例如:
# 一层目录
file (GLOB files *.cpp)
# 两层目录
file (GLOB files *.cpp */*.cpp)
# 三层目录
file (GLOB files *.cpp */*.cpp */*/*.cpp)
第二种方案:使用foreach (推荐)
cmake_minimum_required(VERSION 3.23)
project(untitled)
set(CMAKE_CXX_STANDARD 14)
# 遍历项目根目录和子目录下所有的 .cpp 文件
file (GLOB files *.cpp */*.cpp)
foreach (file ${files})
string(REGEX REPLACE ".+/(.+)/(.+)\\..*" "\\1-\\2" exe ${file})
add_executable (${exe} ${file} )
endforeach ()
add_executable(untitled main.cpp lesson_1_helloWorld.cpp lesson_2.cpp)