CMake项目引入GLFW外部库编译失败求助
问题原因及解决方法
你的问题出在导入GLFW库时的头文件路径配置错误,具体有两个核心问题:
属性使用错误:对于导入的静态库,需要用
INTERFACE_INCLUDE_DIRECTORIES指定头文件路径——这个属性的作用是让链接该库的目标(比如你的hello可执行文件)自动继承头文件搜索路径。而你用的INCLUDE_DIRECTORIES是针对目标自身编译时的路径配置,导入的静态库不需要编译,所以这个属性完全无效。路径指向错误:从项目结构来看,
GLFW/glfw3.h实际位于${CMAKE_SOURCE_DIR}/external/GLFW/include目录下,你当前设置的${CMAKE_SOURCE_DIR}/external让编译器找不到GLFW子目录下的头文件。
修改后的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 INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/external/GLFW/include) add_executable(hello ${CMAKE_SOURCE_DIR}/src/main.cpp) target_link_libraries(hello GLFW)
修改后重新执行CMake生成Makefile,再运行make即可正常编译。
内容的提问来源于stack exchange,提问作者OuDret
相关产品推荐
相关产品推荐

