Der Compiler teilt mit, dass die Nachrichten (.../message.h) nicht gefunden werden. Siehe meine CMakeLists.txt unterROS C++ catkin findet meine benutzerdefinierten Nachrichten nicht
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)
jedoch ist in der Lage mit dem folgenden Trick zu kompilieren. Ich habe zuerst My_FLAG
zu flase und kompilieren gesetzt. Als nächstes setze ich es wieder auf true und kompiliere es erneut. Dadurch funktioniert es gut. Aber ... ich könnte vermuten, dass es eine elegantere/professionellere/einfachere Lösung geben sollte. Ich bin bisher nicht in der Lage, die Ursache dieses Problems zu erkennen. Irgendeine Lösung bitte?
Ich denke, das Problem hängt mit der Reihenfolge der Abhängigkeiten ... Welche? Keine Ahnung ...
Immer noch das gleiche Problem. Versuchen Sie, "/ devel" und "/ build" zu entfernen, und versuchen Sie es erneut. Oder Sie könnten versuchen, Ihr Paket aus '/ catkin-dev/src /' zu entfernen, \ buid und \ devel zu entfernen, zu kompilieren, dann Ihr Projekt zurück zu verschieben und erneut zu kompilieren. In meinem Fall musste ich immer die Flagge setzen, um in der ersten Kompilation zu blinken .... – Courier
In der Tat bezieht sich der Fehler auf ein Problem mit meinen Quellen nicht meine exe-Dateien. Tatsächlich aktiviert/deaktiviert das Flag, das ich gesetzt habe, auch die Quellen, nicht nur die EXE-Dateien. – Courier