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)