我想编译一个项目来开始学习OpenGL,但我不能。
当我运行CMake -G "Unix Makefiles" ..
时,它生成Makefile,没有任何警告。运行Make时,编译失败。这是引发的错误。
fatal error: GLFW/glfw3.h: No such file or directory
2 | #include <GLFW/glfw3.h>
下面是我添加库的CMakeLists.txt
。
cmake_minimum_required(VERSION 3.9.1)
project(TEST)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_library(GLFW STATIC IMPORTED GLOBAL)
set_target_properties(GLFW PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/external/GLFW/libglfw3.a )
set_target_properties(GLFW PROPERTIES INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/external)
add_executable(hello ${CMAKE_SOURCE_DIR}/src/main.cpp)
target_link_libraries(hello GLFW)
在这里你可以看到我的项目树:project tree
你知道出了什么问题吗?
2条答案
按热度按时间ztigrdn81#
你这样做:
我很确定你应该使用
INTERFACE_INCLUDE_DIRECTORIES
(用于添加到链接到指定属性的目标的目标的包含目录)而不是INCLUDE_DIRECTORIES
(用于指定属性的目标)。对导入的目标使用INCLUDE_DIRECTORIES
实际上没有任何意义,因为它是导入的--它已经构建好了。请注意,您还可以使用the
target_include_directories
command设置包含目录。前n3schb8v2#
我成功了
我在GLFW目标上设置包含目录,而不是hello(main.cpp)
对CMakeList.txt的更改:
从
到
谢谢你的评论,帮助我弄清楚了。