CMake生成Debug和Release目标程序时的一些配置
# 指定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"
)