find_package(unofficial-godot-cpp CONFIG REQUIRED) 中 CONFIG 的作用是什么

在 CMake 中,这里的 CONFIG 关键字有一个非常明确的用途,它用于指定:

使用 package 自带的配置文件 *Config.cmake*-config.cmake,而不是查找系统级的 Find 模块(FindXXX.cmake


🧩 语法解释

find_package(unofficial-godot-cpp CONFIG REQUIRED)
  • unofficial-godot-cpp:这是 package 的名字(通常由 vcpkg 提供)

  • CONFIG:告诉 CMake 去找 unofficial-godot-cppConfig.cmake 或类似文件

  • REQUIRED:如果找不到,就报错终止


📘 CONFIG 和 MODULE 的区别

模式用途查找方式
MODULE(默认)使用 CMake 自带的 FindXXX.cmake搜索 CMake 自带的 Modules/FindXXX.cmake
CONFIG使用第三方 package 安装目录中的 XXXConfig.cmake搜索 CMAKE_PREFIX_PATH 下的 XXXConfig.cmake

✅ 为什么要显式写 CONFIG

当你使用 vcpkg 清单模式(使用 vcpkg.json 管理依赖)时,vcpkg 安装的包不会提供 FindXXX.cmake,而是提供:

<package>/share/<name>/<name>Config.cmake

例如:

<vcpkg_root>/installed/x64-windows/share/unofficial-godot-cpp/unofficial-godot-cppConfig.cmake

所以你必须使用 CONFIG,否则:

find_package(unofficial-godot-cpp REQUIRED) # ❌ 失败

CMake 会尝试去找 Findunofficial-godot-cpp.cmake,而你根本没有这个文件。


📌 vcpkg 的包装命名规范

vcpkg 提供的包一般都叫 unofficial-xxx,所以你需要:

find_package(unofficial-xxx CONFIG REQUIRED)

例如:

  • unofficial-sqlite3

  • unofficial-godot-cpp

  • unofficial-glfw


✅ 配套语句

find_package(unofficial-godot-cpp CONFIG REQUIRED)
 
target_link_libraries(MyTarget PRIVATE unofficial-godot-cpp::unofficial-godot-cpp)