CMakeList 编写和debug release区分

cmake_minimum_required(VERSION 2.6)

PROJECT(active_service)
EXECUTE_PROCESS(COMMAND git log -1 --pretty=format:%h  OUTPUT_VARIABLE version)
add_definitions(-DACTIVE_GIT_VERSION=${version})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -Wall")

AUX_SOURCE_DIRECTORY(. main)
AUX_SOURCE_DIRECTORY(./common common)
AUX_SOURCE_DIRECTORY(./network network)
AUX_SOURCE_DIRECTORY(./service service)

LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/../3rdparty/mysql64/lib/mysql ${PROJECT_SOURCE_DIR}/../3rdparty/jsoncpp/lib
                 ${PROJECT_SOURCE_DIR}/../3rdparty/mxml-2.9  ${PROJECT_SOURCE_DIR}/../common
                 ${PROJECT_SOURCE_DIR}/../common/newdbhelper
        ${PROJECT_SOURCE_DIR}/../3rdparty/dtc/lib 
${PROJECT_SOURCE_DIR}/../3rdparty/JMA/lib ${PROJECT_SOURCE_DIR}/stat )

ADD_EXECUTABLE(active_service ${main} ${common} ${network} ${service})


target_include_directories(active_service PUBLIC
../3rdparty/mysql64/include/mysql  ../3rdparty/jsoncpp/include
../3rdparty/mxml-2.9 ../common ../common/newdbhelper ../3rdparty/dtc/include
../3rdparty/JMA/include stat/)
target_link_libraries(active_service dtc jma dbproxy jsoncpp pthread mxml
common libmysqlclient.a stat)
#add_library(active_service STATIC dbproxy jsoncpp mysqlclient mxml common)
#add_library(active_service SHARED pthread)

#add link library

区分debug和release

mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
`CMakeLists.txt` 是 CMake 构建系统的一个关键文件,它用于配置项目的构建过程。为了区分 debug release 版本,你需要在 `CMakeLists.txt` 中设置一些特定的变量选项。 1. **设置构建类型**:首先,在文件顶部添加 `CMAKE_BUILD_TYPE` 变量,例如: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) # 默认为 Release message(STATUS "Setting build type to 'Release'") else() message(STATUS "Build type is already set to '${CMAKE_BUILD_TYPE}'") endif() ``` 这会将默认构建类型设为 `Release`,如果已经设置了其他类型则保持不变。 2. **配置优化级别**:对于 Release 版本,你可以调整优化级别其他编译器选项。例如,使用 `-O2` 或 `-O3` 表示不同的优化程度。而在 Debug 版本下,通常需要启用调试信息更详细的错误检查,可以设置为 `-g`: ```cmake if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g") # 添加调试符号 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") endif() ``` 3. **链接库的不同版本**:如果你项目有静态或动态链接依赖,也需要针对 debug release 版本分别处理,比如选择不同的库文件: ```cmake if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") find_library(MyLibrary_DEBUG libMyLibrary_d.lib) # 使用 debug 版本的库 elseif(${CMAKE_BUILD_TYPE} STREQUAL "Release") find_library(MyLibrary_RELEASE libMyLibrary.lib) # 使用 release 版本的库 endif() ``` 4. **生成不同目录结构**:你可以创建不同的输出目录,如 `bin/debug` `bin/release`,以便存放 debug release 版本的可执行文件: ```cmake add_executable(MyProgram main.cpp) get_filename_component(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} REALPATH) install(TARGETS MyProgram RUNTIME DESTINATION bin/${CMAKE_BUILD_TYPE} LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值