CMake生成Debug和Release目标程序时的一些配置

时间:2025-03-15 09:26:18
# 指定CMake最低版本 cmake_minimum_required(VERSION 3.16) # 构建项目的名称 project(cmake_demo) # 包含头文件 include_directories(${PROJECT_SOURCE_DIR}/include) # 打印编译类型 message("CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE}) # 生成静态库 add_library(jlib STATIC ${PROJECT_SOURCE_DIR}/src/) set(OUT_LIB_PATH ${PROJECT_SOURCE_DIR}/lib) set(OUT_EXE_PATH ${PROJECT_SOURCE_DIR}/exe) # 设置静态库的输出 set_target_properties(jlib PROPERTIES # 除了debug和release其他类型库的输出 ARCHIVE_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/other # debug库的输出 ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/debug # release库的输出 ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${OUT_LIB_PATH}/release ) # 生成动态库 add_library(dlib SHARED ${PROJECT_SOURCE_DIR}/src/) # 设置动态库的输出 set_target_properties(dlib PROPERTIES # windows lib文件输出 ARCHIVE_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/other ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/debug ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${OUT_LIB_PATH}/release # windows dll文件输出 RUNTIME_OUTPUT_DIRECTORY ${OUT_EXE_PATH}/other RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUT_EXE_PATH}/debug RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUT_EXE_PATH}/release # linux so 文件输出 LIBRARY_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/other LIBRARY_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/debug LIBRARY_OUTPUT_DIRECTORY_RELEASE ${OUT_LIB_PATH}/release # windows pdb文件 PDB_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/pdb PDB_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/pdb # debug 版本加后缀 DEBUG_POSTFIX "d" ) # 生成可执行程序 add_executable(res ${PROJECT_SOURCE_DIR}/src/) # 设置可执行程序的输出 set_target_properties(res PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OUT_EXE_PATH}/other RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUT_EXE_PATH}/debug RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUT_EXE_PATH}/release # 设置工作目录 # VS_DEBUGGER_WORKING_DIRECTORY ${OUT_EXE_PATH} # 根据不同编译类型,设置不同工作目录 # $<IF:1,debug,release> 满足条件,返回debug # $<IF:0,debug,release> 不满足条件,返回release VS_DEBUGGER_WORKING_DIRECTORY $<IF:$<CONFIG:Debug>,debug,release> # windows pdb文件 PDB_OUTPUT_DIRECTORY ${OUT_LIB_PATH}/pdb PDB_OUTPUT_DIRECTORY_DEBUG ${OUT_LIB_PATH}/pdb # debug 版本加后缀 DEBUG_POSTFIX "d" )