ROS1 Qt5 CMake基本配置

##############################################################################
# CMake
##############################################################################

cmake_minimum_required(VERSION 3.10)
project(test_project VERSION 0.1)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)



##############################################################################
# Catkin
##############################################################################

find_package(catkin REQUIRED COMPONENTS
  qt_build # qt_build provides the qt cmake glue
  roscpp
  sensor_msgs
  cv_bridge
  rosbag
  camera_image_msgs
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

catkin_package(
  CATKIN_DEPENDS qt_build roscpp sensor_msgs cv_bridge rosbag camera_image_msgs
)



##############################################################################
# Qt Environment
##############################################################################
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

# set(CMAKE_PREFIX_PATH "/home/dengjh/Qt/5.15.2/gcc_64")

set(ModuleList 
    Core
    Gui
    Widgets
    Network
    Concurrent
)

foreach(QtModule ${ModuleList}) 
    # set(Qt5${QtModule}_DIR ${CMAKE_PREFIX_PATH}/lib/cmake/Qt5${QtModule})
    set(Qt5${QtModule}_DIR /home/dengjh/Qt/5.15.2/gcc_64/lib/cmake/Qt5${QtModule})
    set(QT_LIBRARIES ${QT_LIBRARIES} Qt5::${QtModule})
endforeach()

find_package(Qt5 REQUIRED ${ModuleList})


file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS ui/*.h include/*.hpp *.h)

QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})



##############################################################################
# Sources
##############################################################################

file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS ui/*.cpp src/*.cpp *.cc *.cxx )



##############################################################################
# Binaries
##############################################################################

add_executable(${PROJECT_NAME} ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})

add_dependencies(${PROJECT_NAME}
  ${catkin_EXPORTED_TARGETS}
)

target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES} ${catkin_LIBRARIES})

install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})


#############################################################################
# DEBUG or RELEASE
#############################################################################

# 如果要生成debug版本
# SET(CMAKE_BUILD_TYPE "Debug")
# 如果要生成release版本
# SET(CMAKE_BUILD_TYPE "Release")
# 添加的支持debug和release支持
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

 Qt CMake官方教程:https://doc.qt.io/qt-5/cmake-get-started.html

posted @ 2022-03-16 17:18  碎银三二两  阅读(201)  评论(0编辑  收藏  举报