ich eine generische Fehlermeldung erhalten, wenn ich versuche catkin Build auszuführen:CUDA ROS CMake nvcc Fatal
CMake Error at robot_cuda_lib_generated_matrix.cu.o.cmake:206 (message):
Error generating
/.../catkin_ws/build/robot/CMakeFiles/robot_cuda_lib.dir/src/./robot_cuda_lib_generated_matrix.cu.o
oder wenn ich versuche, in den Ordner selbst zu bauen:
nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
Ich weiß, dass die Matrix .cu-Datei funktioniert. Ich habe es aus dem CUDA-Tutorial herausgeholt, das sie machen, und es funktioniert gut, wenn ich es in ein anderes Projekt lege. Meine führende Theorie ist, dass es irgendwie Konflikte mit einem meiner anderen Pakete gibt. Oder vielleicht ist meine CMakeLists.txt irgendwo falsch. Ich habe einige Änderungen und Korrekturen ausprobiert. Dies ist die aktuelle Version:
cmake_minimum_required(VERSION 2.8.11)
project(robot)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
pcl_ros
)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}")
find_package(OpenCV REQUIRED)
find_package(efusion REQUIRED)
find_package(Qt4 REQUIRED)
find_package(Qwt REQUIRED)
find_package(VTK 7 REQUIRED)
find_package(CUDA REQUIRED)
include(${QT_USE_FILE})
include(${VTK_USE_FILE})
include(FindCUDA)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES robot
# CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)
include_directories(
include
include/gplvm
${catkin_INCLUDE_DIRS}
${EFUSION_INCLUDE_DIR}
${EIGEN_INCLUDE_DIRS}
# include this for ui_h
${CMAKE_CURRENT_BINARY_DIR}
${QWT_INCLUDE_DIR}
#/usr/local/cuda/include
)
qt4_wrap_cpp(MOC_SRCS
include/gplvm_plot.hpp
include/parameter_handler.hpp
include/robot.hpp
)
qt4_wrap_ui(UI_HDRS
ui/parameter_handler.ui
ui/robot.ui
)
file(GLOB robot_cuda "src/*.cu")
file(GLOB robot_srcs "src/*.cpp" "src/kernel/*.cpp" "src/*.cu")
file(GLOB robot_hdrs "include/*.h" "include/*.hpp" "include/kernel/*.h" "include/kernel/*.hpp")
cuda_add_library(robot_cuda_lib ${robot_cuda} ${robot_hdrs})
cuda_add_executable(robot_node ${robot_srcs} ${robot_hdrs} ${MOC_SRCS} ${UI_HDRS})
target_link_libraries(robot_node
${catkin_LIBRARIES}
${OpenCV_LIBS}
${EFUSION_LIBRARY}
${Eigen_LIBRARIES}
${QWT_LIBRARY}
${QT_LIBRARIES}
${VTK_LIBRARIES}
)
Ist es möglich, eine der anderen Pakete bricht die Build?
Sie erhalten eher Hilfe, wenn Sie die ausführliche Ausgabe von Cmake bis zu dem Punkt bereitstellen, an dem der Fehler generiert wurde. Bitte fragen Sie mich nicht, wie das geht, es gibt viele Materialien im Internet, die erklären, wie man von Cmake eine ausführliche Ausgabe erhält. Mit diesen Informationen können andere das Problem im Cmake-Kompilierbefehl schneller identifizieren und zu einem bestimmten Eintrag in Ihrer Cmakelists.txt-Datei zurückverfolgen. –
Cmake gibt keinen Fehler, make macht. Ich dachte nur, dass es ein Problem war, das das Cmaking stemmte. Als ich ausführliches make machte, wurde mir klar, dass es darum ging, eine Tonne Bibliotheken an die cuda-Bibliothek anzuhängen, und dachte, dass etwas darin das Problem verursachte, und es scheint so zu sein. – Shadow0144