我正在尝试使用 CMake 和 C++20 的模块。但cmake找不到clang-scan-deps程序。但我可以在我的终端中使用它,所以我不知道为什么它找不到它。 错误信息:
~/coding/cpp-modules
> cmake --build ./build/Debug --target all
[1/8] Scanning /usr/include/vulkan/vulkan.cppm for CXX dependencies
FAILED: CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi
"CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND" -format=p1689 -- /usr/bin/clang++-17 -g -std=gnu++20 -x c++ /usr/include/vulkan/vulkan.cppm -c -o CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o -MT CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi -MD -MF CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi.d > CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi.tmp && mv CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi.tmp CMakeFiles/VulkanHppModule.dir/usr/include/vulkan/vulkan.cppm.o.ddi
/bin/sh: 1: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND: not found
[2/8] Scanning /home/lastlost/coding/cpp-modules/main.cpp for CXX dependencies
FAILED: CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi
"CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND" -format=p1689 -- /usr/bin/clang++-17 -g -std=gnu++20 -x c++ /home/lastlost/coding/cpp-modules/main.cpp -c -o CMakeFiles/CppModulesTest.dir/main.cpp.o -MT CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi -MD -MF CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi.d > CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi.tmp && mv CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi.tmp CMakeFiles/CppModulesTest.dir/main.cpp.o.ddi
/bin/sh: 1: CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS-NOTFOUND: not found
ninja: build stopped: subcommand failed.
如果我输入 clang-scan-deps:
~/coding/cpp-modules
> clang-scan-deps --version
clang-scan-deps
Ubuntu LLVM version 17.0.6
Optimized build.
尝试将 CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS 变量设置为“/usr/local/bin/clang-scan-deps”或“clang-scan-deps”,但没有成功。
我找到了解决问题的临时方法。如果您转到 CMakeCache.txt 文件并找到 CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS 变量,您会发现如下内容:
CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=**Something here**
相反,你需要做类似的事情:
CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS:FILEPATH=/usr/local/bin/clang-scan-deps
。
但正如我所说,这是一个临时解决方案,因为在下一个项目中,cmake 将无法再次找到 clang-scan-deps 文件,您将需要再次执行此操作。附:请注意 /usr/local/bin/clang-scan-deps 是我的路径,您需要自己找到 clang-scan-deps 的路径。