2016-09-22 155 views
0

我正在編譯Qt5,VTK,PCL和PDAL到一個項目中,並且我的構建過程非常出色,直到我重建PCL爲止,因爲我試圖擺脫另一個奇怪的錯誤在連接PCL之後,在Qt5中語法錯誤不斷出現,關於這方面的更多信息,請看這裏:Qt, VTK, PCL, and PDAL integration 我最近也同意在根下創建一個新的XCode許可證,所以也可能是這個問題,下面是確切的錯誤:Cmake奇怪的錯誤:語法錯誤意外的令牌('

/bin/sh: -c: line 0: syntax error near unexpected token `(' 
/bin/sh: -c: line 0: `/usr/bin/g++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -I/Users/wfehrnstrom/build-CmakeTest-MainKit-Release -I/Users/wfehrnstrom/CmakeTest -I/usr/local/include/vtk-7.0 -isystem /usr/local/include -iframework /Users/wfehrnstrom/Qt5/5.7/clang_64/lib -isystem /Users/wfehrnstrom/Qt5/5.7/clang_64/lib/QtWidgets.framework/Headers -isystem /Users/wfehrnstrom/Qt5/5.7/clang_64/lib/QtGui.framework/Headers -isystem /System/Library/Frameworks/OpenGL.framework/Headers -isystem /Users/wfehrnstrom/Qt5/5.7/clang_64/lib/QtCore.framework/Headers -isystem /Users/wfehrnstrom/Qt5/5.7/clang_64/./mkspecs/macx-clang -ferror-limit=0 -O3 -DNDEBUG vtkDomainsChemistry_AUTOINIT=1(vtkDomainsChemistryOpenGL2) vtkRenderingContext2D_AUTOINIT=1(vtkRenderingContextOpenGL2) vtkRenderingCore_AUTOINIT=3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) vtkRenderingVolume_AUTOINIT=1(vtkRenderingVolumeOpenGL2) -fPIC -std=gnu++11 -o CMakeFiles/CmakeTest.dir/main.cpp.o -c  /Users/wfehrnstrom/CmakeTest/main.cpp' 
make[2]: *** [CMakeFiles/CmakeTest.dir/main.cpp.o] Error 2 
make[1]: *** [CMakeFiles/CmakeTest.dir/all] Error 2 
make: *** [all] Error 2 

有誰知道爲什麼我VTK重建和PCL後似乎得到這個奇怪的錯誤無處?謝謝!

+0

作爲一個更新,我現在已經確定find_package(VTK 7.0.0必需)是在的CMakeLists.txt導致錯誤爲我的項目就行了。 – user3833261

+0

這似乎不是鏈接錯誤,而是編譯時出錯,因爲項目生成文件生成正確 – user3833261

+0

關於堆棧溢出問題的更新應通過**編輯問題本身**,而不是通過評論來表達。至於錯誤消息,它是由'vtkDomainsChemistry_AUTOINIT = 1(vtkDomainsChemistryOpenGL2)'''等編譯器定義引起的。除了值,包含'()'(這在shell中導致錯誤),它不是真正的編譯器定義 - 它不是以'-D'選項開始的。可能是VTK出了問題,這絕對是這種定義的起源。 – Tsyvarev

回答

1

在OS X上將PCL拉入QT5時出現了同樣的問題。

從源代碼編譯PCL 1.8解決了問題(從PCL 1.6遷移)。

的CMakeLists.txt:

project(LRS_PCL) 
set(CMAKE_C_COMPILER "/usr/bin/gcc") 
set(CMAKE_CXX_COMPILER "/usr/bin/g++") 
cmake_minimum_required(VERSION 2.8) 

set(SOURCE_DIR .) 
set(SOURCE 
    ${SOURCE} 
    ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp 
    PARENT_SCOPE 
) 
aux_source_directory(. SRC_LIST) 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 
set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt/5.5/gcc_64) 

find_package(PCL 1.8 REQUIRED) 
find_package(Qt5 REQUIRED COMPONENTS Widgets Core) 

include(CheckCXXCompilerFlag) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

include_directories(${PCL_INCLUDE_DIRS} /user/local/include) 
link_directories(${PCL_LIBRARY_DIRS} /usr/local/lib /usr/lib/x86_64-linux-gnu) 
add_definitions(${PCL_DEFINITIONS}) 

target_link_libraries(LRS_PCL ${PCL_LIBRARIES} /usr/local/lib/librealsense.so)