c++ - CMake - get_filename_component 未知组件目录

标签 c++ cmake glfw

我在使用 CMake 时遇到了一些麻烦。 我正在尝试与 GLFW 链接并包含我自己项目的多个源文件。 (我正在从 Visual Studio 切换到跨平台项目)。

GLFW 在文件夹 deps/glfw-3.1.1 中,我的源代码在文件夹 src 中

这是我的 CMakeLists.txt 文件:

# Tell CMake to use a minimum of version 3.2
cmake_minimum_required(3.2)

project(Sparky)
# TODO: Versions

# Add all of our source code to the project
file(GLOB_RECURSE Sparky_SOURCES "src/*.cpp")
file(GLOB_RECURSE Sparky_HEADERS "src/*.h")

set(Sparky_INCLUDE_DIRS "")
foreach (_headerFile ${Sparky_HEADERS})
    get_filename_component(_dir ${_headerFile} path)
    list (APPEND Sparky_INCLUDE_DIRS ${_dir})
endforeach()
list(REMOVE_DUPLICATES Sparky_INCLUDE_DIRS)

add_subdirectory(deps/glfw-3.1.1)
include_directories(${Sparky_INCLUDE_DIRS})
include_directories(deps/glfw-3.1.1/include)

add_executable(Sparky ${Sparky_SOURCES}
target_link_libraries(Sparky glfw ${GLFW_LIBRARIES}))

最佳答案

似乎至少有一次迭代的变量 _headerFile 和路径的值错误。使用以下代码在 foreach 循环中启动 get_filename_component 之前尝试打印这些变量的值。

message(STATUS "_headerFile: ${_headerFile} )
message(STATUS "path: " ${path}  )

有时这些类型的错误可能是由这些参数的错误值引起的。

关于c++ - CMake - get_filename_component 未知组件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31900252/

相关文章:

CMake 链接到外部库

c++ - 嵌套静态链接库和一个可怕的错误

使用无效参数调用 cmake target_include_directories

opengl - FreeGLUT 与 GLFW 有什么区别?

C++ 如何根据某些条件在编译时删除类成员字段?

c++ - 如何检测应用程序是否在 KVM 下运行?

c++ - VS2008 中的访问冲突,但 VS2002 中没有

c++ ofstream(someVariable) 初始化

qt - 什么会导致 CMake 选项不起作用?

c++ - 调用 glewInit() 导致 main 函数不被调用