使用cmake构建工程

1、安装cmake

2、工程目录如下

/root/myproject
|-- CMakeLists.txt
|-- bin
|-- build
|-- include
|   `-- libtest
|       `-- libtest.h
|-- lib
|-- libtest
|   |-- CMakeLists.txt
|   `-- src
|       |-- libtest.cpp
|       `-- libtest.h
`-- test
    |-- CMakeLists.txt
    |-- include
    |   `-- test.h
    `-- src
        `-- test.cpp

3、编写CMakeLists.txt

1)myproject下的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

PROJECT(MYPROJECT CXX)

SET(PROJECT_ROOT_PATH "/root/myproject")
SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_ROOT_PATH}/bin") //可执行文件输出路径
SET(LIBRARY_OUTPUT_PATH "${PROJECT_ROOT_PATH}/lib")    //链接库输出路径

SET(CMAKE_CXX_COMPILER "g++")                          //编译器选择,默认gcc

INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include")    //链接库的头文件路径
LINK_DIRECTORIES("${LIBRARY_OUTPUT_PATH}")             //链接库路径

ADD_DEFINITIONS("-DMY_DEF")                            //宏

ADD_SUBDIRECTORY("./libtest")                          //库目录
ADD_SUBDIRECTORY("./test")                             //主目录

2)libtest下的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

SET(LIBRARY_OUTPUT_NAME "libtest")                      //链接库的名称
#SET(PROJECT_ROOT_PATH "/root/myproject")               
#SET(LIBRARY_OUTPUT_PATH "${PROJECT_ROOT_PATH}/lib")

#SET(CMAKE_CXX_COMPILER "g++")
SET(CMAKE_CXX_FLAGS_DEBUG "-fPIC -O0 -Wall -g -DDEBUG")  //debug版
SET(CMAKE_CXX_FLAGS_RELEASE "-fPIC -O2 -Wall -DNDEBUG")  //release版
#SET(CMAKE_BUILD_TYPE Debug)                             //版本选择

FILE(GLOB CXX_LIST "./src/*.cpp")                         
FILE(GLOB INC_LIST "./src/*.h")

ADD_LIBRARY(${LIBRARY_OUTPUT_NAME} SHARED ${CXX_LIST})   //生成动态库,STATIC生成静态库
CONFIGURE_FILE(${INC_LIST} "${PROJECT_ROOT_PATH}/include/libtest")   //把头文件拷贝到指定位置
#INSTALL(FILES ${INC_LIST} DESTINATION "${PROJECT_ROOT_PATH}/include/libtest")   //通过make install把头文件拷贝到指定位置
#INSTALL(TARGETS ${LIBRARY_OUTPUT_NAME} DESTINATION "${PROJECT_ROOT_PATH}/lib")  //通过make install把库生成到指定位置

3)test下的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

SET(EXECUTABLE_OUTPUT_NAME "test")    //可执行文件的名称
#SET(PROJECT_ROOT_PATH "/root/myproject")
#SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_ROOT_PATH}/bin")

#SET(CMAKE_CXX_COMPILER "g++")
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -DDEBUG")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -DNDEBUG")
#SET(CMAKE_BUILD_TYPE Debug)

#INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include")
#LINK_DIRECTORIES("${PROJECT_ROOT_PATH}/lib")

INCLUDE_DIRECTORIES("./include")     //头文件位置
FILE(GLOB CXX_LIST "./src/*.cpp")
#ADD_DEFINITIONS(-DMY_DEF)

ADD_EXECUTABLE(${EXECUTABLE_OUTPUT_NAME} ${CXX_LIST})   //生成可执行文件
TARGET_LINK_LIBRARIES(${EXECUTABLE_OUTPUT_NAME} libtest)   //可执行文件需要链接的库

4、外部构建工程

进入/root/myproject/build目录,执行
cmake -DCMAKE_BUILD_TYPE=Debug .. //选择debug版
make //生成链接库和可执行文件
make clean //清除






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值