2016-09-22 168 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)