编写CMakeLists常使用的函数和示例

11 篇文章 0 订阅

CMakeLists文件示例

  • 生成执行程序
cmake_minimum_required(VERSION 3.5)    #cmake最低版本要求
project(Test)                                   #工程名

set(CMAKE_CXX_STANDARD 11)    #c++11 设置
set(CMAKE_BUILD_TYPE DEBUG) # debug版
#add_subdirectory()  添加子目录  该目录下自动寻找对应的CMakeLists.txt文件
#set(COMMON_SRC ${SRC_ROOT_DIR}/Public/common/kingtbb.cpp)  #将源文件设置到变量中
#add_library(common_lib STATIC ${COMMON_SRC})  生成对应的静态库方便链接 
#
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

#如果要编译成可用gprof分析的版本,则在配置文件中加入:
#set(CMAKE_BUILD_TYPE Profile)
#set(CMAKE_CXX_FLAGS_PROFILE  "-pg"  )
       
add_compile_options(-std=c++11 -w)
#add_definitions(-std=c++11)

add_definitions(-g)     

add_definitions(-Wno-deprecated-declarations)

aux_source_directory(./ SRCLIST)     #将当前目录下的源文件 加到变量SRCLIST
aux_source_directory(./DataManger SRCLIST)   #将当前目录下的DataManger 下的源文件 加到变量SRCLIST


include_directories("./")								#头文件包含路径
include_directories("../../../MidWare")			#头文件包含路径
include_directories("../../../Public")    #头文件包含路径
link_directories("/usr/lib/x86_64-linux-gnu/c++11")  #指定额外的库链接路径

add_executable(Test  ${SRCLIST}  
                        ../../../Public/http/HttpClient.cpp
                        ../../../Public/ServerNet/net/ClientSocket.cpp
                        ../../../Public/ServerNet/net/CSession.cpp
                        ../../../Public/ServerNet/net/ServerNet.cpp
                        ../../../Public/common/CLongData.cpp
                        ../../../Public/common/CommonFunc.cpp
                        ../../../Public/common/kingtbb.cpp
                        ../../../Public/stock/Stockdetail.cpp
                        )
#生成Test 程序依赖SRCLIST 和其他的cpp文件

target_link_libraries(Test  dl libboost_locale.a libboost_system.a libboost_filesystem.a 
                                pthread z rt libboost_thread.a libuuid.a  libjansson.a libcurl.so stdc++  ${CMAKE_THREAD_LIBS_INIT})
#Test 需要链接的库
  • 生成库实例
cmake_minimum_required(VERSION 3.5)
project(StockLib)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE DEBUG)

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


add_definitions(-g)

add_definitions(-Wno-deprecated-declarations)

aux_source_directory(./ SRCLIST)
aux_source_directory(./DataManger SRCLIST)


include_directories("./")
include_directories("../../../MidWare")
include_directories("../../../Public")


add_library(StockLib STATIC ${SRCLIST}  
                        ../../../Public/http/HttpClient.cpp
                        ../../../Public/ServerNet/net/ClientSocket.cpp
                        ../../../Public/common/CLongData.cpp
                        ../../../Public/common/CommonFunc.cpp
                        ../../../Public/common/kingtbb.cpp

                        )

#此库文件依赖其他库
target_link_libraries(StockLib   dl libboost_locale.a libboost_system.a libboost_filesystem.a 
                                pthread z rt libboost_thread.a libuuid.a  libjansson.a libcurl.so stdc++  ${CMAKE_THREAD_LIBS_INIT})

cmake使用过程

cmake使用过程
1. 在CMakeLists文件当前目录创建个build文件夹
2. cd build 然后执行cmake ..   (补充:cmake .. -DCMAKE_BUILD_TYPE=Debug/Release 编译debug或者release版本)
3. 成功的话就会生成Makefile文件
4. 然后 make 就能编译
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值