【问题标题】:How to write the CMakeList file如何编写 CMakeList 文件
【发布时间】:2017-01-17 08:17:33
【问题描述】:
cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR)       
project(WINDOW CXX) 
set(WINDOW_SRCS window.cpp)     
add_executable(Window ${WINDOW_SRCS})       
set(CMAKE_CXX_STANDARD 14)  

find_library(OPENGL_LIB 
    NAMES lGLEW lglfw3 lGL lrt lm ldl lXrandr lXinerama lXxf86vm lXext lXcursor lXrender lXfixes lX11 lpthread lxcb lXau lXdmcp lXi lSOIL lassimp 
    PATHS /usr/lib /usr/local/lib
)   

if(OPENGL_LIB)
    target_link_library(Window ${OPENGL_LIB})   
endif() 

我正在尝试编写 CMakeList.txt 文件。我在生成的 Makefile 中遇到错误

makefile:1: *** 缺少分隔符。停下来。

我在每一行的开头添加了tabs。我不知道哪里错了

【问题讨论】:

  • 请添加您键入的命令以生成 makefile 并从 CMake 构建。
  • 另外,使用 find_package() 工具可能会更好,请参阅此处的 FindOpenGL 参考:cmake.org/cmake/help/v3.0/module/FindOpenGL.html
  • 命令cmake .
  • 在使用您的代码时没有发现问题。
  • 您能否尝试清理CMakeCache.txt 文件和Makefile 以及目录CMakeFiles,如果它们存在文件cmake_install.cmakeCTestTestfile.cmake。现在再次通过cmake . 重新运行CMake 配置。然后make 告诉我们。解决方案可能只是清理缓存。

标签: cmake


【解决方案1】:

问题是您没有从之前的 CMake 配置运行中清理 CMake 生成的文件。
请删除CMakeCache.txt 文件和Makefile 以及目录CMakeFiles 以及如果它们存在文件cmake_install.cmakeCTestTestfile.cmake
现在您可以再次通过cmake . 重新运行 CMake 配置。
然后执行make应该就OK了。


在回答中,我没有尝试改进您的CMakeLists.txt,只是为了让您遇到的问题消失。
否则,正如@roalz 所建议的,您可以使用find_package() 来查找OpenGL。
另一个“改进”可能是使用源外构建。这样,所有构建结果都将包含在一个目录中,而不会干扰源代码树。在这种情况下,要从一个干净的状态开始并重新运行 CMake 配置,您只需要删除该构建目录,而不是删除周围创建的所有单个文件。这对于具有嵌套源目录(多于一层)的项目特别有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2013-09-07
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2015-12-27
    相关资源
    最近更新 更多