2016-11-14 121 views
0

我得到一個一般性錯誤,當我嘗試運行柳絮編譯:CUDA ROS CMake的NVCC致命

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 

,或者如果我嘗試建立的文件夾本身:

nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified 

我知道矩陣.cu文件起作用。我將它從他們製作的CUDA教程中拉出來,如果我把它放在另一個項目中,它工作得很好。我的主要理論是與我的其他軟件包有某種衝突。或者也許我的CMakeLists.txt在某個地方是錯的。我已經嘗試了很多更改和修復。這是當前版本:

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} 
) 

是否有可能其中一個包是打破構建?

+1

如果您提供Cmake的詳細輸出直至產生錯誤的點,則您更有可能獲得幫助。請不要問我該怎麼做,網上有很多資料解釋如何從Cmake獲得詳細輸出。有了這些信息,其他人就可以更快速地識別Cmake編譯命令中的問題,並將其追溯到Cmakelists.txt文件中的特定條目。 –

+0

Cmake不會給出任何錯誤,make會。我只是認爲這是造成製造業的一個問題。當我做了詳細的製作時,我意識到它試圖向庫達圖書館追加大量圖書館,並發現其中的某些內容導致了問題,而且似乎是這樣。 – Shadow0144

回答

1

的確,有些軟件包與CUDA不一致。我把cuda_add_library調用移到了find_package調用之前,並且它被修改並且很好。