我对自己尝试Vulkan很感兴趣,但我很难让CMake可靠地链接到它。我决定使用CMake的FindVulkan module..。或者至少我认为它应该是怎么工作的。下面是我是如何做到的:
# Hey CMake. Look for Vulkan.
find_package(Vulkan REQUIRED)
# Alright, no errors? Tell me what you found!
message("Vulkan found? " ${VULKAN_FOUND})
message("Alright, where is it? " ${VULKAN_LIBRARY})
message("And I can include it? " ${VULKAN_INCLUDE_DIR})在文件中稍晚一点:
# Let's make a library and link vulkan
include_directories(${VULKAN_INCLUDE_DIR})
add_library(myLib myLib.cpp myLib.h)
target_link_libraries(myLib ${VULKAN_LIBRARY})所以,我得到了我的结果!首先,我的CMake输出:
Vulkan found? TRUE
Alright, where is it? VULKAN_LIBRARY-NOTFOUND
And I can include it? C:/VulkanSDK/1.0.65.1/Include
-- Could NOT find Vulkan (missing: VULKAN_LIBRARY)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Using Win32 for window creation
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
VULKAN_LIBRARY (ADVANCED)
linked by target "TOVE" in directory C:/Users/User/Desktop/TOVE奇怪的是,看起来你找到了我的include目录,但是你找不到我的库。中间的消息实际上是GLFW。我把它们放在里面以防它们有更多的意义。最后,CMake停止并返回错误。
一些额外的测试显示${VULKAN_LIBRARIES}和${VULKAN_INCLUDE_DIRS}都是空的。正如预期的那样,将它们与其单一的对应物交换会使Visual Studio2017对我的vulkan/vulkan.h include感到困惑。
我在互联网上找不到任何有人得到VULKAN_LIBRARY-NOTFOUND的案例,但可能有另一个库有类似的问题。为什么我在这里只找到了一半的信息?这是Vulkan或CMake的问题,还是我真的不擅长用CMake写东西。我对CMake比较陌生,我只是在尝试它,所以如果只是我在这些代码行中误用了一些重要的函数或其他东西,我很抱歉。
发布于 2018-03-15 04:23:40
当我试图在Windows上编译GLFW 3.2.1时,我也遇到了同样的错误。问题是GLFW CMakeLists在“${GLFW_SOURCE_DIR}/CMake/ FindVulkan.cmake”中使用了自己的模块,这似乎有点过时了。
从FindVulkan.cmake inside CMake发行版(3.10)中提取一些代码来修改GLFW文件,并使用.lib文件的路径填充VULKAN_LIBRARY缓存变量。
https://stackoverflow.com/questions/48014518
复制相似问题