編譯器告訴消息(.../message.h)未找到。看到我的CMakeLists.txt下面ROS C++ catkin找不到我的自定義消息
cmake_minimum_required(VERSION 2.8.3)
project(my_package)
add_compile_options(-std=c++11)
find_package(catkin REQUIRED
COMPONENTS cv_bridge
image_transport
roscpp
#rospy
sensor_msgs
std_msgs
message_generation
genmsg
external_package
)
find_package(nodelet REQUIRED)
#----
add_message_files(FILES
my_message1.msg
my_message2.msg
)
generate_messages(DEPENDENCIES
std_msgs sensor_msgs
)
catkin_package(
CATKIN_DEPENDS message_runtime std_msgs sensor_msgs roscpp cv_bridge image_transport
)
#****** EXTRA PACKAGES
find_package(LAPACK REQUIRED)
find_package(BLAS REQUIRED)
find_package(PkgConfig REQUIRED)
FIND_PACKAGE(Boost)
find_package(OpenCV)
include_directories(${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
SET(MY_FLAG ok) # OR no!!
if(MY_FLAG)
#**** exe files
set(exefiles
file1
file2
)
foreach(file ${exefiles})
add_executable(${file} ${CMAKE_CURRENT_SOURCE_DIR}/pathToExeFiles/${file}.cpp)
endforeach(file)
#****** Lib & link
include_directories(${SRC}/pathToMyLib)
set(MY_LIB
lib1
lib2
libn
)
endif(MY_FLAG)
foreach(file ${exefiles})
target_link_libraries(${file2link}
${MY_LIB}
${MY_LIB}
${MY_LIB}
${catkin_LIBRARIES}
${Boost_LIBRARIES}
${gsl_LIBRARIES} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}
${OpenCV_LIBRARIES}
)
add_dependencies(${file} external_package_generate_messages_cpp ${${my_package}_EXPORTED_TARGETS})
endforeach(file)
ADD_SUBDIRECTORY(src)
但是,我們能夠用以下技巧編譯。我首先設置My_FLAG
來進行編譯和編譯。接下來,我將其設置爲true並重新編譯。通過這樣做,它工作正常。但是......我猜想應該有更優雅/專業/直接的解決方案。到目前爲止,無法檢測到這個問題的原因。請任何解決方案?
我認爲這個問題與依賴關係的順序有關......哪個?不知道......
仍是同樣的問題。實際上,試着刪除'/ devel'和'/ build',然後再次嘗試編譯。或者,你可以嘗試從'/ catkin-dev/src /'移出你的軟件包,刪除\ buid和\ devel,編譯,然後移回你的項目並重新編譯。在我的情況下,我不得不始終設置標誌在第一編譯flase .... – Courier
事實上,錯誤是與我的來源不是我的exe文件的問題有關。事實上,我設置的標誌也啓用/禁用源,而不僅僅是exe文件。 – Courier