前提:你要先安装好这个库才能用cmake找到它,即你必须有
这个库对应的xxxConfig.cmake或者Findxxx.cmake之类的文件才行
1、如果这个库你是用源码编译安装的且该源码使用cmake管理的,那安装后一定会有这种文件,可以用cmake找到
2、如果这个库是从网站下载的编译好的,那么查看一下目录中是否存在这种类似名称的文件,如果没有的话,cmake找不到该库
3、如果这个库是exe安装的或者使用apt install ,dnf 等安装的,一定要去文件目录确认一下
- OpenCV
cmake_minimum_required(VERSION 3.17)
project(你自己的工程名称)
# c++ 版本
set(CMAKE_CXX_STANDARD 17)
#包含了所有子模块也可以分模块包含,具体的模块名称查看opencv文档,例如 find_package(OpenCV COMPONENTS core viz REQUIRED )
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(程序名 xxx.cpp xxx.h)
target_link_libraries(程序名 ${OpenCV_LIBS})
- Boost
cmake_minimum_required(VERSION 3.17)
project(你自己的工程名称)
# c++ 版本
set(CMAKE_CXX_STANDARD 17)
# 包含了所有子模块也可以分模块包含,例如 find_package(Boost REQUIRED system thread data_time filesystem)
find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
add_executable(程序名 xxx.cpp xxx.h)
target_link_libraries(程序名 ${Boost_LIBRARIES})
- Qt
#设置cmake版本号
cmake_minimum_required(VERSION 3.4.0)
#设置工程名称
project(HelloWorld)
#设置工程包含当前目录,非必须
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON)
#查找需要的Qt库文件,最好每一个库都要写,Qt也会根据依赖关系自动添加
find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Gui)
# 也可以这样
# find_package(Qt5 COMPONENTS core gui network widgets REQUIRED)
#查找当前文件夹中的所有源代码文件,也可以通过Set命令将所有文件设置为一个变量
FILE(GLOB SRC_FILES "./*.cxx")
#同理,查找当前文件夹中所有的头文件
FILE(GLOB HEAD_FILES "./*.h")
#同理,查找当前文件夹中所有的ui文件
FILE(GLOB UI_FILES "./*.ui")
#通过Ui文件生成对应的头文件,一定要添加
qt5_wrap_ui(WRAP_FILES ${UI_FILES})
#添加资源文件
set(RCC_FILES rcc.qrc)
#将ui文件和生成文件整理在一个文件夹中,非必须
source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} )
#创建工程文件
add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES} ${RCC_FILES} ${WRAP_FILES})
#添加Qt5依赖项
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)
- 取消控制台,在链接的时候加入
if (MSVC)
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
else ()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows")
endif ()
- PCL
cmake_minimum_required(VERSION 3.17)
project(工程名)
set(CMAKE_CXX_STANDARD 17)
#子模块,小写
find_package(PCL COMPONENTS common kdtree REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_executable(程序名 main.cpp)
#注意链接格式为 PCL_XXX_LIBRARIES
target_link_libraries(程序名 ${PCL_COMMON_LIBRARIES} ${PCL_KDTREE_LIBRARIES})
- Eigen3
cmake_minimum_required(VERSION 3.17)
project(你自己的工程名称)
# c++ 版本
set(CMAKE_CXX_STANDARD 17)
find_package(Eigen3 REQUIRED)
include_directories(${Eigen3_INCLUDE_DIR})
add_executable(程序名 xxx.cpp xxx.h)
# eigen库只有头文件没有链接库,不需要target_link_libraries命令
- GTK
find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)
link_directories(${GTKMM_LIBRARY_DIRS})
include_directories(${GTKMM_INCLUDE_DIRS})
target_link_libraries(main ${GTKMM_LIBRARIES})
版权声明:本文为weixin_41115751原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。