【问题标题】:Cmake Strange Error: Syntax Error Unexpected Token ('Cmake奇怪的错误:语法错误意外令牌('
【发布时间】:2016-09-22 04:28:06
【问题描述】:

我正在将 Qt5、VTK、PCL 和 PDAL 编译到一个项目中,并且在我重建 PCL 之前,我的构建过程运行良好,因为我试图摆脱另一个奇怪的错误,即链接后在 Qt5 中不断弹出语法错误PCL。有关这方面的更多信息,请参见此处:Qt, VTK, PCL, and PDAL integration 我最近还同意了根下的新 XCode 许可证。所以这也可能是问题所在。这是确切的错误:

/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 后突然出现这个奇怪的错误?谢谢!

【问题讨论】:

  • 作为更新,我现在确定 find_package(VTK 7.0.0 REQUIRED) 是 CMakeLists.txt 中导致我的项目出错的行。
  • 这似乎也不是链接错误,而是编译错误,因为项目 makefile 生成良好
  • On Stack Overflow 问题的更新应该通过编辑问题帖子本身来表达,而不是通过 cmets。至于错误信息,它是由编译器定义引起的,如vtkDomainsChemistry_AUTOINIT=1(vtkDomainsChemistryOpenGL2)。除了包含() 的值(这会导致shell 中的错误)之外,它不是真正的编译器定义——它不是以-D 选项开头的。很可能,VTK 出了点问题,这绝对是这种定义的起源。

标签: c++ bash qt makefile cmake


【解决方案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 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2018-07-23
    • 2014-09-23
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多