【问题标题】:Issue: C compiler used for C++ in CMake | CMake + git问题:CMake 中用于 C++ 的 C 编译器 | CMake + 混帐
【发布时间】:2021-08-16 02:06:30
【问题描述】:

我一直在使用 CMake 构建我的下一个 C++ 项目,我必须将一个名为“GLFW”的库链接到我的可执行文件。我对此一直有奇怪的问题:

这是我的项目结构

GLFW 被克隆到“dep”目录中。 “构建”目录是我的 CMake 构建目录。 'src' 目录是我的顶级 CMakeLists.txt 的子目录,其中包含源代码。

顶级 CMakeLists.txt:

cmake_minimum_required(VERSION 3.20.1)
set(CMAKE_CXX_STANDARD 20)
project(OpenGL1)
add_subdirectory(dep/glfw)
add_subdirectory(src)
target_link_libraries(${PROJECT_NAME} glfw)

src/CMakeLists.txt:

add_executable(${PROJECT_NAME} main.cpp)

src/main.cpp:

#include <iostream>
int main() 
{
    std::cout<<"Hello, world!\n";
}

我这样配置我的项目(命令从根目录运行) cmake -G "Ninja" -S . -B build

配置运行良好,但建筑物不: cmake --build build 这会导致一长串错误

cmake --build build
[1/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\monitor.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj -c ../dep/glfw/src/monitor.c
clang: error: no such file or directory: '/clang:-Wall'
[2/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\window.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj -c ../dep/glfw/src/window.c
clang: error: no such file or directory: '/clang:-Wall'
[3/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\context.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj -c ../dep/glfw/src/context.c
clang: error: no such file or directory: '/clang:-Wall'
[4/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\init.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj -c ../dep/glfw/src/init.c
clang: error: no such file or directory: '/clang:-Wall'
[5/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\input.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj -c ../dep/glfw/src/input.c
clang: error: no such file or directory: '/clang:-Wall'
[6/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\vulkan.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj -c ../dep/glfw/src/vulkan.c
clang: error: no such file or directory: '/clang:-Wall'
ninja: build stopped: subcommand failed.

我不知道这是 glfw 的 CMakeLists.txt 还是我的系统的问题,但是当我从顶级 CMakeLists.txt 中删除依赖 GLFW 的函数时,没有错误。

请注意,我已经尝试使用 git 子模块,但遇到了同样的错误,所以我使用了这种方式,因为它更直接。

我在 windows 上使用 Ninja,我没有使用 git repo,该项目只是我 PC 上的一些文件。 如何解决这些错误? 提前致谢 :) 随意询问其他文件的内容 - 文件太多,无法全部放在这里。

【问题讨论】:

    标签: c++ cmake clang glfw


    【解决方案1】:

    你的项目很好。你只是碰巧在 glfw 中遇到了一个错误:https://github.com/glfw/glfw/issues/1807

    已修复,但尚未发布。因此,您最好的选择是克隆 master 分支,或者手动应用解决了您的源版本中的问题的任何修复程序,直到 3.3.5 发布。

    【讨论】:

    • 谢谢!我设法通过克隆主分支来修复它。
    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    相关资源
    最近更新 更多