2017-04-14 57 views
0

这是我之前询问的一个后续问题,如果您喜欢,可能会发现here。总而言之,我一直在尝试理解将必要的库链接到OpenGL的构建过程。我知道有些样板和其他方法可以使这个过程变得更简单。我有兴趣能够自主地这样做。CMake成功,导致生成文件错误

我的问题是,虽然CMake成功处理我的CMakeLists.txt文件,但生成的Makefile会引发错误。如果有帮助,我的文件结构是 这里情境:

+ infuriating_project 
    + bin // post compile results 
    + src // my humble code 
    + deps // external code 
     +glew 
      + include 
      + src 
     +glfw 
      + include 
      + src 
     +glm 
     +soil 
      + lib 
      + src 

这里是我的CMakeLists.txt文件的内容:

cmake_minimum_required (VERSION 3.0) 

# Version Information --------------------------------------------------------- 
project (openGL-practice) 
SET (VERSION_MAJOR 1) 
SET (VERSION_MINOR 0) 
SET (VERSION_FEATURE 0) 
SET (VERSION_PATCH 0) 
SET (VERSION "${VERSION_MAJOR}.${VERSION_MINOR}") 
SET (VERSION "${VERSION}.${VERSION_FEATURE}.${VERSION_PATCH}") 
MESSAGE ("Version: ${VERSION}") 

# Configure Binary Directories ------------------------------------------------ 
SET (PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin") 
MESSAGE ("Source path: ${PROJECT_SOURCE_DIR}") 
MESSAGE ("Binary path: ${PROJECT_BINARY_DIR}") 

# Configure Depenency Directories --------------------------------------------- 
SET (deps "${PROJECT_SOURCE_DIR}/deps") 
MESSAGE ("Dependencies path: ${deps}") 
SET (glew_inc "${deps}/glew/include/GL/") 
SET (glew_src "${deps}/glew/src/") 
SET (glfw_inc "${deps}/glfw/include/GLFW/") 
SET (glfw_src "${deps}/glfw/src/") 
SET (glm "${deps}/glm/glm/") 
SET (soil_lib "${deps}/lib/") 
SET (soil_src "${deps}/src/") 

# Include directories --------------------------------------------------------- 
include_directories(" 
    ${PROJECT_SOURCE_DIR} 
    ${glew_inc} 
    ${glew_src} 
    ${glfw_inc} 
    ${glfw_src} 
    ${glm} 
    ${soil_lib} 
    ${soil_src} 
    ") 

# Add executable -------------------------------------------------------------- 
add_executable(main ${PROJECT_SOURCE_DIR}/src/main.cpp) 

完成后,运行make时,我得到了以下错误:

CMakeFiles/main.dir/flags.make:10: *** missing separator. Stop. 
make[1]: *** [CMakeFiles/main.dir/all] Error 2 
make: *** [all] Error 2 

我对这个错误的调查使我相信有一个语法错误,可能是一个制表符vs空格错误,如here 。我确信这是我的一个问题,而不是CMake中的错误。我相信应该有办法改变我的CMakeLists文件,以免发生这个问题。

对于这篇已经很冗长的文章,Makefile有点冗长。如果上传它对我有帮助,我可以用这些信息编辑这个问题。非常感谢您提供任何和所有帮助或建议。

回答

1

这是错误的:

include_directories(" 
    ${PROJECT_SOURCE_DIR} 
    ${glew_inc} 
    ${glew_src} 
    ${glfw_inc} 
    ${glfw_src} 
    ${glm} 
    ${soil_lib} 
    ${soil_src} 
    ") 

不要引用这是一个长的字符串:cmake的会尽量提供此字符串(包括新行)作为你的编译器的参数-I

用途:

include_directories(
    ${PROJECT_SOURCE_DIR} 
    ${glew_inc} 
    ${glew_src} 
    ${glfw_inc} 
    ${glfw_src} 
    ${glm} 
    ${soil_lib} 
    ${soil_src} 
    ) 

或者,报价每个单独的路径,如果你想。

+0

谢谢你,这正是问题所在。 – assemblyDruid