From ffb2ea3546a616c81351e8d3b88d4d3c8e9db2b5 Mon Sep 17 00:00:00 2001 From: Mystic <215104920@qq.com> Date: Thu, 12 Sep 2024 22:25:44 +0800 Subject: [PATCH] feat(cxx): simplify the output config using generator expression --- .../CMakeLists.txt | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/template/cxx/{{cookiecutter.project_slug}}/CMakeLists.txt b/template/cxx/{{cookiecutter.project_slug}}/CMakeLists.txt index 4561bda..4951449 100644 --- a/template/cxx/{{cookiecutter.project_slug}}/CMakeLists.txt +++ b/template/cxx/{{cookiecutter.project_slug}}/CMakeLists.txt @@ -26,26 +26,20 @@ endif() # ===================== Output Directories ===================== -# Set output directories -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - -# Ensure output directories are set for all configurations -foreach(OUTPUT_CONFIG ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER ${OUTPUT_CONFIG} OUTPUT_CONFIG) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}) -endforeach() +# Use generator expressions for output directories +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/bin>") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/lib>") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/lib>") # ===================== Source Files ===================== # Collect source files -file(GLOB_RECURSE SOURCES +file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/src/*.cpp ) -file(GLOB_RECURSE HEADERS ${CMAKE_SOURCE_DIR}/include/*.h) +file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS + ${CMAKE_SOURCE_DIR}/include/*.h +) # ===================== Library Target =====================