CMakeLists.txt编写和使用方法

一、使用方法
一般把CMakeLists.txt文件放在工程目录下,使用时,先创建一个叫build的文件夹(这个并非必须,只是生成的Makefile等文件放在build里比较整齐),然后执行下列操作:
cd build
cmake ..
make
其中cmake .. 在build里生成Makefile,make应当在有Makefile的目录下,根据Makefile生成可执行文件。

二、编写方法

# 声明要求的cmake最低版本
cmake_minimum_required( VERSION 2.8 )

# 添加c++11标准支持
set( CMAKE_CXX_FLAGS "-std=c++11" )

# 声明一个cmake工程
project( 工程名 )

# 找到后面需要库和头文件的包
find_package(包的名称及最低版本)
# 例如find_package(OpenCV 2.4.3 REQUIRED)

# 头文件
include_directories("路径")
# 例如
#include_directories(
# ${PROJECT_SOURCE_DIR}
# ${PROJECT_SOURCE_DIR}/include
# ${EIGEN3_INCLUDE_DIR}
)

# 设置路径(下面生成共享库的路径)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
# 即生成的共享库在工程文件夹下的lib文件夹中

# 创建共享库(把工程内的cpp文件都创建成共享库文件,方便通过头文件来调用)
add_library(${PROJECT_NAME} SHARED
src/cpp文件名
……
)
# 这时候只需要cpp,不需要有主函数
# ${PROJECT_NAME}是生成的库名 表示生成的共享库文件就叫做 lib工程名.so
# 也可以专门写cmakelists来编译一个没有主函数的程序来生成共享库,供其它程序使用

# 链接库
# 把刚刚生成的${PROJECT_NAME}库和所需的其它库链接起来
target_link_libraries(${PROJECT_NAME}
/usr/lib/i386-linux-gnu/libboost_system.so
)

# 编译主函数,生成可执行文件

# 先设置路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

# 可执行文件生成
add_executable(要生成的可执行文件名 从工程目录下写起的主函数文件名)

# 这个可执行文件所需的库(一般就是刚刚生成的工程的库咯)
target_link_libraries(可执行文件名 ${PROJECT_NAME})

一个使用opencv库的CMakeLists小例子:

cmake_minimum_required(VERSION 2.8)
project(filter)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(main main.cpp)
target_link_libraries(main${OpenCV_LIBS})

以上,可在主函数中添加头文件

#include "opencv2/imgproc/imgproc.hpp"

测试是否正确。

CMakeLists.txt是用于构建CMake项目的配置文件。它描述了项目的源代码、依赖项和构建规则等信息。下面是一个基本的CMakeLists.txt文件的示例: ```cmake cmake_minimum_required(VERSION 3.10) # 指定CMake的最低版本要求 project(MyProject) # 设置项目名称 # 添加源代码文件 add_executable(MyExecutable example_person.cpp) # 添加依赖库 add_subdirectory(proto_pb2) add_subdirectory(proto_buf) # 设置头文件搜索路径 include_directories(include) # 设置库文件搜索路径 link_directories(lib) # 链接依赖库 target_link_libraries(MyExecutable ProtoBuf) # 设置编译选项 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # 设置安装规则 install(TARGETS MyExecutable DESTINATION bin) ``` 上述示例中,我们首先指定了CMake的最低版本要求为3.10,并设置了项目名称为"MyProject"。然后,我们使用`add_executable`命令添加了一个名为"MyExecutable"的可执行文件,并将源代码文件"example_person.cpp"与之关联。 接下来,我们使用`add_subdirectory`命令添加了两个子目录"proto_pb2"和"proto_buf",用于构建这两个子目录中的项目。 然后,我们使用`include_directories`命令设置了头文件搜索路径,将"include"目录添加到搜索路径中。 使用`link_directories`命令设置了库文件搜索路径,将"lib"目录添加到搜索路径中。 使用`target_link_libraries`命令将依赖库"ProtoBuf"链接到"MyExecutable"可执行文件上。 使用`set`命令设置了编译选项,将C++标准设置为C++11。 最后,使用`install`命令设置了安装规则,将"MyExecutable"可执行文件安装到"bin"目录下。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值