C++调试经验:Ubuntu下CMake链接常见库的方式(持续更新)
目录
1. CMake链接OpenCV库
2. CMake链接VTK库
3. CMake链接Qt库
4. CMake链接PCL库
5. CMake链接Gstreamer
6. CMake链接json-cpp库
7. CMake链接yaml-cpp库
8. CMake链接breakpad库
9. CMake链接Eigen3库
1. CMake链接OpenCV库
find_package (OpenCV 4 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
2. CMake链接VTK库
find_package (OpenCV 4 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
3. CMake链接Qt库
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5 COMPONENTS Widgets Core Gui Network REQUIRED) #大写
set(CMAKE_INCLUDE_CURRENT_DIR ON)
file(GLOB PRO_FORM_DIR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB PRO_RESOURCES_DIR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resource/*.qrc)
file(GLOB_RECURSE PRO_INCLUDE_DIR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/*.hpp include/*.h )
file(GLOB_RECURSE PRO_SOURCES_DIR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)
#qt头文件moc文件resource文件处理
qt5_wrap_ui(QT_UI_HPP ${PRO_FORM_DIR})
qt5_wrap_cpp(QT_MOC_HPP ${PRO_INCLUDE_DIR})
qt5_add_resources(QT_RESOURCES_CPP ${PRO_RESOURCES_DIR})
add_executable(${PROJECT_NAME}${PRO_SOURCES_DIR}${QT_RESOURCES_CPP}${PRO_INCLUDE_DIR}${QT_MOC_HPP}${PRO_FORM_DIR}
)
target_link_libraries(${PROJECT_NAME}_nodeQt5::NetworkQt5::CoreQt5::GuiQt5::Widgets
)
4. CMake链接PCL库
set (CMAKE_CXX_STANDARD 14) # ubuntu 20.04 需要设置c++14
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES})
5. CMake链接Gstreamer
find_package(PkgConfig REQUIRED)
pkg_check_modules(GST REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-video-1.0
)
include_directories(${GST_INCLUDE_DIRS}
)
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME}${GST_LIBRARIES}
)
6. CMake链接json-cpp库
find_package(json-cpp REQUIRED)
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME} json-cpp
)
7. CMake链接yaml-cpp库
find_package(yaml-cpp REQUIRED)
target_link_libraries(${PROJECT_NAME} yaml-cpp
)
8. CMake链接breakpad库
find_package(PkgConfig REQUIRED)
pkg_check_modules(BREAKPAD REQUIRED breakpad-client)
include_directories(${BREAKPAD_INCLUDE_DIRS})
# 添加到add_executable之后
target_link_libraries(${PROJECT_NAME}${BREAKPAD_LIBRARIES}pthread
)
9. CMake链接Eigen3库
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIRS})