cmake_minimum_required(VERSION 3.8) project(mpc_drv_ctap_rm) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() set(GTEST 0) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_definitions(-O0 -g) else() add_definitions(-O2) endif() # find dependencies # find_package(ament_cmake REQUIRED) # uncomment the following section in order to fill in # further dependencies manually. # find_package( REQUIRED) # find_package(rclcpp REQUIRED) # find_package(nav_msgs REQUIRED) # find_package(loc_msgs REQUIRED) # find_package(visualization_msgs REQUIRED) # find_package(mpc_drv_msgs REQUIRED) # find_package(cem_interfaces REQUIRED) # find_package(vehicle_msgs REQUIRED) if(GTEST) add_definitions(-DGTEST) endif() #add_definitions(-DRVIZ) set(RM_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") #警告变错误 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") #忽视警告 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath=./")#设置rpath,用于指定程序运行时依赖库路径(当前程序所在目录) set(CMAKE_EXE_LINKER_FLAGS " -no-pie") #防止链接动态库时出现错误 : can not be used when making a PIE object; recompile with -fPIC file(GLOB SOURCES_FILES ${RM_DIR}/core/*.cc ${RM_DIR}/wrappers/*.cpp # ${RM_DIR}/core/ats/c0calculator/*.cc # ${RM_DIR}/core/ats/funnel/*.cc # ${RM_DIR}/core/ats/handler/*.cc # ${RM_DIR}/core/ats/logger/*.cc # ${RM_DIR}/core/ats/node/*.cc # ${RM_DIR}/core/ats/offsetcalculator/*.cc # ${RM_DIR}/core/ats/param/*.cc # ${RM_DIR}/core/ats/road/*.cc # ${RM_DIR}/core/ats/runner/*.cc # ${RM_DIR}/core/ats/selector/*.cc # ${RM_DIR}/core/ats/util/*.cc # ${RM_DIR}/core/ats/validator/*.cc ${RM_DIR}/core/common/base/*.cc ${RM_DIR}/core/common/math/*.cc ${RM_DIR}/core/road/*.cc ${RM_DIR}/core/config/*.cc ${RM_DIR}/core/task/*.cc ${RM_DIR}/core/task/builders/*.cc ${RM_DIR}/core/task/builders/boundary_builder/*.cc ${RM_DIR}/core/task/builders/corridor_builder/*.cc ${RM_DIR}/core/task/builders/object_assignment_builder/*.cc ${RM_DIR}/core/task/builders/ilc_corridor_builder/*.cc ${RM_DIR}/core/common/state_machine/*.cc ${CMAKE_SOURCE_DIR}/generated/src/jac/ap/emservice/*.cpp ${CMAKE_SOURCE_DIR}/generated/src/jac/ap/fusionservice/*.cpp ${CMAKE_SOURCE_DIR}/generated/src/jac/ap/slamservice/*.cpp ${CMAKE_SOURCE_DIR}/generated/src/jac/ap/canservice/*.cpp ) message(STATUS "${PROJECT_NAME}") if(GTEST) add_executable(${PROJECT_NAME} ${SOURCES_FILES} ${RM_DIR}/core/mpc_drv_ctap_rm_node_unit_test.cpp) else() add_executable(${PROJECT_NAME} ${SOURCES_FILES} ${RM_DIR}/core/mpc_drv_ctap_rm_node.cpp) endif() # ament_target_dependencies(${PROJECT_NAME} rclcpp visualization_msgs mpc_drv_msgs cem_interfaces vehicle_msgs nav_msgs loc_msgs) # CHANGE target_include_directories(${PROJECT_NAME} PUBLIC $ $ ${CMAKE_SOURCE_DIR}/generated/includes ${CMAKE_SOURCE_DIR}/modules/common/inc/ap-cm-wrapper ${RM_DIR}/wrappers/ ) target_compile_features(${PROJECT_NAME} PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 include_directories( ${CMAKE_SOURCE_DIR}/generated/includes ${CMAKE_SOURCE_DIR}/generated/includes/dpc ${RM_DIR}/core ${RM_DIR}/third_party ${RM_DIR}/third_party/glog ${RM_DIR}/third_party/gflags ${RM_DIR}/third_party/gtest # ${RM_DIR}/core/ats/c0calculator # ${RM_DIR}/core/ats/funnel # ${RM_DIR}/core/ats/handler # ${RM_DIR}/core/ats/interface # ${RM_DIR}/core/ats/logger # ${RM_DIR}/core/ats/node # ${RM_DIR}/core/ats/offsetcalculator # ${RM_DIR}/core/ats/param # ${RM_DIR}/core/ats/platform # ${RM_DIR}/core/ats/road # ${RM_DIR}/core/ats/runner # ${RM_DIR}/core/ats/selector # ${RM_DIR}/core/ats/util # ${RM_DIR}/core/ats/validator ${RM_DIR}/core/common/base ${RM_DIR}/core/common/math ${RM_DIR}/core/road ${RM_DIR}/core/config ${RM_DIR}/core/task ${RM_DIR}/core/task/builders ${RM_DIR}/core/task/builders/boundary_builder ${RM_DIR}/core/task/builders/corridor_builder ${RM_DIR}/core/task/builders/object_assignment_builder ${RM_DIR}/core/task/builders/ilc_corridor_builder ${RM_DIR}/core/common/ ${RM_DIR}/../../../generated/includes ${RM_DIR}/../../../generated/includes ) message("######## ${RM_DIR}/../../../generated/includes") link_directories( ${RM_DIR}/third_party ${RM_DIR}/third_party/gflags ${RM_DIR}/third_party/gtest ${RM_DIR}/third_party/glog ) if(GTEST) target_link_libraries(${PROJECT_NAME} ${RM_DIR}/third_party/glog/libglog.a ${RM_DIR}/third_party/gtest/libgtest.a ${RM_DIR}/third_party/gflags/libgflags.a ) else() target_link_libraries(${PROJECT_NAME} ${RM_DIR}/third_party/glog/libglog.a ${RM_DIR}/third_party/gflags/libgflags.a ${AP_LIBRARIES} pthread jsoncpp yaml-cpp -llog common ) endif() ## Set install Options ## # install(DIRECTORY config/ # DESTINATION ${PROJECT_NAME}/config # ) # install(DIRECTORY lib/${ARCH}/ # DESTINATION ${PROJECT_NAME}/lib # USE_SOURCE_PERMISSIONS # ) install(TARGETS ${PROJECT_NAME} # ARCHIVE DESTINATION ${PROJECT_NAME}/lib LIBRARY DESTINATION ${PROJECT_NAME}/lib RUNTIME DESTINATION ${PROJECT_NAME}/lib ) install(DIRECTORY script/ DESTINATION ${PROJECT_NAME}/script USE_SOURCE_PERMISSIONS ) install(DIRECTORY ${RM_DIR}/conf/ DESTINATION ${PROJECT_NAME}/config ) # if(BUILD_TESTING) # find_package(ament_lint_auto REQUIRED) # # the following line skips the linter which checks for copyrights # # uncomment the line when a copyright and license is not present in all source files # #set(ament_cmake_copyright_FOUND TRUE) # # the following line skips cpplint (only works in a git repo) # # uncomment the line when this package is not in a git repo # #set(ament_cmake_cpplint_FOUND TRUE) # ament_lint_auto_find_test_dependencies() # endif() # ament_package()