CMakeList模板(一):简单的模板

本文详细介绍了如何使用CMake进行项目配置,包括设置编译目录、编译标志、链接库等,并提供了Debug与Release模式的编译指令,适用于生成可执行文件和共享库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmake_minimum_required( VERSION 3.8 FATAL_ERROR)
project(main VERSION 1.0.0 LANGUAGES CXX)

#set dirs
set(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR})
message("project dir:${PROJECT_ROOT}")

SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)   #导出clangd需要的文件,用于智能提示和基于语议的补全

SET(BIN_DESTINATION ${PROJECT_SOURCE_DIR}/bin)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BIN_DESTINATION})
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN_DESTINATION})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_DESTINATION})

#set compile flags
#add_definitions(-std=c++11 -g -rdynamic)
set(CMAKE_CXX_FLAGS "-g3 -rdynamic -std=c++11")
set(CMAKE_CXX_FLAGS_DEBUG "-g3 -O0 -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")

#include dirs
include_directories(./)

#link dirs
link_directories(${BIN_DESTINATION})

#libraries
SET(SRC_BASE_CALC base_calc.cpp)
add_library(base_calc SHARED ${SRC_BASE_CALC})

SET(SRC_ADD add_calc.cpp)
add_library(add SHARED ${SRC_ADD})
target_link_libraries(add base_calc)

SET(SRC_SUB sub_calc.cpp)
add_library(sub SHARED ${SRC_SUB})
target_link_libraries(sub base_calc)

SET(SRC_MULTI multi_calc.cpp)
add_library(multi SHARED ${SRC_MULTI})
target_link_libraries(multi base_calc)

SET(SRC_DIV div_calc.cpp)
add_library(div SHARED ${SRC_DIV})
target_link_libraries(div base_calc)


#execute 
SET(SRC_MAIN main.cpp calc_service.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION})    
add_executable( ${PROJECT_NAME} ${SRC_MAIN})
target_link_libraries(${PROJECT_NAME} add sub multi div pthread)

配置后可直接使用,支持生成可执行的二进制文件、so文件

Debug编译:cmake .. -DCMAKE_BUILD_TYPE=Debug && make clean && make VERBOSE=1

Release编译:cmake .. -DCMAKE_BUILD_TYPE=Release  && make clean && make VERBOSE=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ztenv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值