..
CMakeLists.txt 模板 - build boost
为什么
有时候要写个小测试程序,一般要类似这样的编译,指定一下include和Lib
g++ main.cc -o main -I ../../include -L ../../lib -lxxx.a
不觉得麻烦?
具体用法
工程代码大致结构如下, 其他 CMakeLists.txt
即下面的模板, build
目录需要创建一下 mkdir build
,其实叫什么都可以, build
算是约定俗成。
---prj
---|---src
---|---CMakeLists.txt
---|---build
---
cd build
到 build
目录下执行。
cmake ..
make
build
目录下会产生除了可执行文件外还有其他文件。
模板
#Author : beautifularea
#Date : 28/3/2021
#Desc : cmake with boost
SET(PROJECTNAME example)
PROJECT(${PROJECTNAME})
CMAKE_MINIMUM_REQUIRED(VERSION 3.10.2)
set(boost_root "/root/debug_boost/boost_1_65_0")
INCLUDE_DIRECTORIES("${boost_root}/include")
LINK_DIRECTORIES("${boost_root}/stage/lib")
AUX_SOURCE_DIRECTORY(./ DIR_MAIN_SRCS)
ADD_EXECUTABLE(${PROJECTNAME} ${DIR_MAIN_SRCS})
FIND_PACKAGE(Boost 1.65.0 COMPONENTS thread date_time filesystem system log log_setup REQUIRED)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_log_setup.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_log.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_system.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_date_time.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_filesystem.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} libboost_thread.a)
TARGET_LINK_LIBRARIES(${PROJECTNAME} -lpthread)