mkdir build
cd build
cmake .. #编译上级目录
make #编译
make install #需要安装才有此句代码
# cmake的基本用法
#6.build_together/CMakeLists.txt`
# 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目信息
project(test_account)
# 添加动态库
add_library(Account SHARED "./account_dir/Account.cpp" "./account_dir/Account.h")
# 添加可执行文件
add_executable(test_account "./test_account/test_account.cpp")
# 添加头文件
target_include_directories(test_account PUBLIC "./account_dir")
# 添加链接库
target_link_libraries(test_account Account)
# 查找libOpenCV.cmake文件
find_package(OpenCV REQUIRED)
# 指定dll路径
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
# 指定头文件路径
include_directories(include)
2、设置安装:
当需要发布项目时你需要指定项目文件的安装路径。下面的代码片段中,使用install
安装demo_test
,并分别将可执行文件安装在bin
中,动态链接库和静态链接库都安装在lib
,公共头文件安装在include
。这里的路径都将添加${CMAKE_INSTALL_PREFIX}
作为前缀(如果不设置CMAKE_INSTALL_PREFIX
,则会安装到/usr/local
目录下)。实现安装的功能在你需要发布你项目给其他人使用时,非常有用。
# 设置安装
install(TARGETS demo_test
RUNTIME DESTINATION bin # 可执行文件
LIBRARY DESTINATION lib # 动态库
ARCHIVE DESTINATION lib # 静态库
PUBLIC_HEADER DESTINATION include # 公共头文件
)
3、寻找依赖 find_package
# 使用find_package寻找<LibaryName>库,如果找到,一般都会有以下变量(库作者设置)
<LibaryName>_FOUND:表示是否找到
<LibaryName>_INCLUDE_DIR:表示头文件目录
<LibaryName>_LIBRARIES:表示库文件目录
4、OpenCv下Cmake的示例
安装OpenCV:sudo apt install libopencv-dev
依赖和链接OpenCV与常规的添加依赖并没有太多不同,同时OpenCV提供了cmake find package
的功能,因此我们可以通过find_package
方便的定位opencv在系统中的位置和需要添加的依赖。
# 首先会在CMAKE_MODULE_PATH中查找FindOpenCV.cmake文件
# 如果找不到,会在CMAKE_PREFIX_PATH中查找dlibConfig.cmake配置文件
# set(CMAKE_PREFIX_PATH "~/Documents/course_lib/config")
# 设置RPATH,否则install后,运行时找不到动态库
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${dlib_INCLUDE_DIR_PARENT}/lib")
find_package(OpenCV REQUIRED)
message("OPENCV INCLUDE DIRS: ${OpenCV_INCLUDE_DIRS}")
message("OPENCV LINK LIBRARIES: ${OpenCV_LIBS}")