【发布时间】:2020-06-01 02:39:53
【问题描述】:
我为我的项目编写了一个简单的 Find***.cmake 文件,该文件在 Windows 上运行良好,
if(WIN32)
find_path(Shaderc_INCLUDE_DIR
NAMES shaderc/shaderc.hpp
PATH "$ENV{VULKAN_SDK}/Include")
find_library(Shaderc_LIBRARY
NAMES shaderc_combined
PATH "$ENV{VULKAN_SDK}/Lib")
elseif(UNIX)
find_path(Shaderc_INCLUDE_DIR
NAMES shaderc/shaderc.hpp
PATH "$ENV{SHADERC_DIR}/include")
find_library(Shaderc_LIBRARY
NAMES libshaderc_combined
PATH "$ENV{SHADERC_DIR}/lib")
endif()
set(Shaderc_INCLUDE_DIRS ${Shaderc_INCLUDE_DIR})
set(Shaderc_LIBRARIES ${Shaderc_LIBRARY})
,但在 Linux 上会引发错误。错误信息是:
CMake 错误:此项目中使用了以下变量,但是 它们被设置为 NOTFOUND。请设置它们或确保它们已设置 并在 CMake 文件中正确测试:Shaderc_LIBRARY
如果我将此代码复制到我的主 CMakeLists 文件中,它也可以在 Linux 上正常编译。我做错了什么?为此目的在 Linux 上使用环境变量是一种不好的做法吗?
感谢您的帮助!
【问题讨论】:
-
欢迎来到 Stack Overflow! “不起作用”的描述不是我们可以帮助您的描述。究竟如何观察到这种“不起作用”?你有错误信息吗?或者某些变量的值错误?请edit 问题帖子并在其中添加更多详细信息。另请参阅How to Ask。
-
对于 Windows,您使用
VULKAN_SDK变量,但对于 Linux,使用SHADERC_DIR变量。 Linux 上变量SHADERC_DIR的值是多少?根据您的假设应该找到库libshaderc_combined的确切路径(和文件名)是什么?
标签: cmake