如何编写CMakeList文件

如何编写CMakeList文件,cmake,Cmake,我正在尝试编写一个CMakeList.txt文件。我在生成的Makefile中得到一个错误 makefile:1:**缺少分隔符。停下来 我在每行的开头添加了选项卡。我想不出哪里出了错问题是您没有从以前的CMake配置运行中清理CMake生成的文件。 请删除CMakeCache.txt文件和Makefile以及目录CMakeFiles,如果它们存在,请删除文件cmake\u install.cmake和CTestTestfile.cmake 现在,您可以再次通过CMake.重新运行CMake配置

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

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


我在每行的开头添加了
选项卡。我想不出哪里出了错

问题是您没有从以前的CMake配置运行中清理CMake生成的文件。
请删除
CMakeCache.txt
文件和
Makefile
以及目录
CMakeFiles
,如果它们存在,请删除文件
cmake\u install.cmake
CTestTestfile.cmake

现在,您可以再次通过
CMake.
重新运行CMake配置。
然后执行
make
,它应该是正常的


在回答中,我没有试图改进您的
CMakeLists.txt
,只是为了解决您遇到的问题。
否则,正如@roalz所建议的,您可以使用
find_package()
来查找OpenGL。

另一个“改进”可能是使用源代码外构建。通过这种方式,所有构建结果都将包含在一个目录中,而不会干扰源树。在这种情况下,要从干净状态开始并重新运行CMake配置,您只需要删除该构建目录,而不需要删除周围创建的所有单个文件。这对于具有嵌套源目录(多个级别)的项目特别有用

请添加您键入的命令以生成makefiles并从CMake生成。此外,使用find_package()功能可能更好,请参阅此处的FindOpenGL参考:命令
cmake。
在使用代码时未发现任何问题。能否尝试清理
CMakeCache.txt
文件和
Makefile
以及目录
CMakeFiles
,如果它们存在,则清理文件
cmake\u install.cmake
CTestTestfile.cmake
。现在通过
CMake.
再次运行CMake配置。然后制作并告诉我们。解决方案可能只是清理缓存。
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()