Update CMakeLists.txt
This commit is contained in:
+19
-5
@@ -1,15 +1,29 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(exercises)
|
||||
|
||||
# 设置 C++ 标准(例如 C++17)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
# 递归查找当前目录下所有的 .cpp 文件
|
||||
file(GLOB_RECURSE SOURCES "*.cpp")
|
||||
|
||||
# 遍历所有找到的 .cpp 文件,为每个文件单独创建一个可执行目标
|
||||
foreach (source ${SOURCES})
|
||||
# 获取文件名(不带扩展名)作为可执行文件的名字
|
||||
# 获取源文件所在目录(绝对路径)
|
||||
get_filename_component(dir ${source} DIRECTORY)
|
||||
# 计算相对于源码根目录的路径
|
||||
file(RELATIVE_PATH rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${dir})
|
||||
# 获取文件名(不带扩展名)
|
||||
get_filename_component(name ${source} NAME_WE)
|
||||
add_executable(${name} ${source})
|
||||
|
||||
# 构造带相对路径的目标名,例如 src_utils_foo
|
||||
if (rel_dir STREQUAL "")
|
||||
set(target_name "${name}")
|
||||
else ()
|
||||
string(REPLACE "/" "__" rel_dir_flat "${rel_dir}")
|
||||
set(target_name "${rel_dir_flat}__${name}")
|
||||
endif ()
|
||||
|
||||
add_executable(${target_name} ${source})
|
||||
# 顺便把可执行文件输出到与源文件对应的目录中(可选)
|
||||
set_target_properties(${target_name} PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${rel_dir}"
|
||||
)
|
||||
endforeach ()
|
||||
Reference in New Issue
Block a user