这是我之前询问过的一个后续问题,如果您满意,可能会找到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有点冗长。如果上传它对我有帮助,我可以用这些信息编辑这个问题。非常感谢您提供任何帮助或建议。
答案 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}
)
或者,如果您愿意,可以单独引用每条路径。