常用库(QT,PCL,OPENCV,EIGEN3等)的cmakelists.txt模板

前提:你要先安装好这个库才能用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})

你可能感兴趣的:(随笔,cmake,opencv,pcl,qt)