我敢肯定,类似的问题已经被问过几十次了,但仍然如此。希望使用 Vulkan、GLFW 和 GLM 编写项目。依赖项本地放置在外部文件夹中的项目旁边。我在 Windows 下的 CLion 中工作并遇到了 CMake。
项目结构如下:
编写了以下 CMake 文件:
cmake_minimum_required(VERSION 3.21)
project(test)
set(CMAKE_CXX_STANDARD 20)
find_package(Vulkan REQUIRED FATAL_ERROR)
include_directories(external/vulkan-1.2.198.1/Include)
include_directories(external/glfw-3.3.6/include)
include_directories(external/glm-0.9.9.8/glm)
link_directories(external/vulkan-1.2.198.1/Lib)
add_subdirectory(external/glm-0.9.9.8/glm)
add_subdirectory(external/glfw-3.3.6)
add_executable(test main.cpp game/game.cpp game/game.h engine/engine.cpp engine/engine.h)
Vulkan 安装在系统中,从安装文件夹复制 Lib 和 Include 目录。GLM 和 GLFW 在其目录中包含自己的 CMakeLists 文件。据我了解,它们需要通过 add_subdirectory 添加。
所有三个使用的库的头文件都是可见的,但是,在尝试构建时,它看不到 GLFW 函数(相同的 glfwInit,例如:未定义的引用glfwInit
)。我知道显然您需要以某种方式使用 target_link_libraries。
问题是:如何最正确和正确地将所有内容连接到项目并编写更好的 CMake 文件?