CMake成功,导致makefile错误

时间:2017-04-14 16:03:24

标签: opengl makefile cmake

这是我之前询问过的一个后续问题,如果您满意,可能会找到here。总而言之,我一直在尝试理解将必要的库链接到OpenGL的构建过程。我知道有一些样板和其他方法可以使这个过程更容易;我有兴趣能够自主地这样做。

我的问题是虽然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

我对此错误的调​​查让我相信存在语法错误,可能是标签与空格错误,如here所示。我确信这是我的问题,而不是CMake中的错误。我相信应该有一种方法来改变我的CMakeLists文件,这样就不会发生这个问题。

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

1 个答案:

答案 0 :(得分: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}
    )

或者,如果您愿意,可以单独引用每条路径。