# 定义一个函数来配置项目的默认设置 # 这包括设置输出目录和项目根目录变量 function(configure_project_defaults) # 检查是否在顶层 CMakeLists.txt 中调用 (可选但推荐) # 确保 CMAKE_SOURCE_DIR 和 CMAKE_CURRENT_SOURCE_DIR 相同 if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) message(WARNING "configure_project_defaults() 应该在项目的根 CMakeLists.txt 中调用。") # 如果您确实需要在子目录中设置不同的根目录,请调整此逻辑 endif() # --- 配置输出目录 --- # 使用 CMAKE_BINARY_DIR 作为基础构建目录 # ${CMAKE_BINARY_DIR} 指向您配置 CMake 时指定的构建目录 # 例如,在 CLion 中通常是 cmake-build-debug 或 cmake-build-release # 如果手动运行 cmake ..,它就是您运行 cmake 命令的目录 # **设置可执行文件输出路径**: # 对于单配置生成器 (如 Makefiles, Ninja), 可执行文件将位于 /bin/ # 对于多配置生成器 (如 Visual Studio, Xcode), CMake 通常会自动在此路径下附加配置名称 # (例如 /bin/Debug/, /bin/Release/) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin CACHE PATH "Directory for runtime executables") message(STATUS "运行时输出目录设置为: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") # **设置库文件输出路径 (共享库和静态库)**: # 规则同上,库文件将位于 /lib/ 或 /lib// set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE PATH "Directory for shared libraries") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE PATH "Directory for static libraries") message(STATUS "库输出目录设置为: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") message(STATUS "存档输出目录设置为: ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}") # --- 提示 --- # 这种全局设置输出目录的方法对于中小型项目是常见的。 # 对于更复杂的项目或需要更细粒度控制的情况,可以考虑为每个目标(target)单独设置输出目录属性: # 例如: # add_executable(my_app main.cpp) # set_target_properties(my_app PROPERTIES # RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/executables" # ) # add_library(my_lib STATIC my_lib.cpp) # set_target_properties(my_lib PROPERTIES # ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/static_libs" # ) endfunction()