本地构建工作正常时没有这样的文件或目录

Posted

技术标签:

【中文标题】本地构建工作正常时没有这样的文件或目录【英文标题】:No such file or directory while local build works fine 【发布时间】:2018-03-04 22:08:50 【问题描述】:

在更改为 CMake 和 Travis CI 构建环境时,我在 Travis CI 上启用了编译。即使 CMake 项目在我的电脑上正确编译,Travis 还是以 2 退出:

In file included from /home/travis/build/Codestones/Proton/source/application.cpp:1:0:
/home/travis/build/Codestones/Proton/source/application.h:3:23: fatal error: glad\glad.h: No such file or directory
 #include <glad\glad.h>
                       ^
compilation terminated.
make[2]: *** [CMakeFiles/Proton.dir/source/application.cpp.o] Error 1
make[1]: *** [CMakeFiles/Proton.dir/all] Error 2
make: *** [all] Error 2

这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)

project(Proton)

set(CMAKE_CXX_STANDARD 11)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(SRC_DIR "$CMAKE_CURRENT_SOURCE_DIR/source")
set(LIB_DIR "$CMAKE_CURRENT_SOURCE_DIR/dependencies")

# Executable definition and properties
file(GLOB SOURCES
    "$SRC_DIR/*.h"
    "$SRC_DIR/*.cpp"
)
add_executable(Proton "$SOURCES")

# GLFW
set(GLFW_DIR "$LIB_DIR/glfw")
set(GLFW_BUILD_EXAMPLES OFF CACHE INTERNAL "Build the GLFW example programs")
set(GLFW_BUILD_TESTS OFF CACHE INTERNAL "Build the GLFW test programs")
set(GLFW_BUILD_DOCS OFF CACHE INTERNAL "Build the GLFW documentation")
set(GLFW_INSTALL OFF CACHE INTERNAL "Generate installation target")
add_subdirectory("$GLFW_DIR")
target_link_libraries($PROJECT_NAME "glfw" "$GLFW_LIBRARIES")
target_include_directories($PROJECT_NAME PRIVATE "$GLFW_DIR/include")
target_compile_definitions($PROJECT_NAME PRIVATE "GLFW_INCLUDE_NONE")

# GLAD
set(GLAD_DIR "$LIB_DIR/glad")
add_subdirectory("$GLAD_DIR")
target_link_libraries($PROJECT_NAME "glad" "$GLAD_LIBRARIES")
target_include_directories($PROJECT_NAME PRIVATE "$PROJECT_BINARY_DIR/dependencies/glad/include")

我认为这意味着glad.h 丢失或链接不正确,但为什么它会在我的电脑上构建和运行良好?

【问题讨论】:

【参考方案1】:

\ 不能用作#include 指令中的路径分隔符,请使用/。如果您的本地(Windows?)编译器能够理解它,那么它就是一个不可移植的扩展。

【讨论】:

哦,那将是一个愚蠢的错误。我现在确实在 Windows 机器上,我会试一试。【参考方案2】:

gcc 支持 Windows 上包含路径中的反斜杠作为扩展

#include <glad\glad.h>

这在 linux 下不受支持,您只能在包含路径中使用正斜杠 /

#include <glad/glad.h>

【讨论】:

以上是关于本地构建工作正常时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

纱线安装错误“ENOENT:没有这样的文件或目录

无法打开流:没有这样的文件或目录,但目录存在。在本地主机上工作但不在实时站点上工作[重复]

ProcessBuilder 在 Mac 上给出“没有这样的文件或目录”,而 Runtime().exec() 工作正常

Android 10 (api 29) 中没有这样的文件或目录

Xcode 错误:构建时没有这样的文件或目录

scp 命令上没有此类文件或目录错误