为什么我可以在本地使用 CMake 提供的模块(特别是 CMakeDependentOption.cmake),但不能在 CI 或 Docker 上使用?
Why can I use CMake supplied modules (CMakeDependentOption.cmake specifically) locally, but not on CI or Docker?
我有一个在本地成功构建的 cmake 项目,但出现错误
include could not find load file:
CmakeDependentOption
尝试在 CI 平台或 Docker 中构建时。注意 CMakeDependentOption.cmake 是 cmake 自带的脚本。所以它应该是可用的。关于CI安装cmake,我wget
从他们的下载页面发布了相关的cmake,解压并将bin目录添加到PATH
环境变量。然后我使用 cmake
命令来构建我的库。结果就是上面的错误。
我怀疑这意味着 CMake 变量(例如“CMAKE_MODULE_PATH”但不是,因为这个变量在 cmake 脚本开始时似乎是空的)被弄乱了或没有设置。 include
的正确文件路径是
<cmake_root>/share/cmake-3.18/Modules/CMakeDependentOption.cmake
并且我已手动验证它存在。我的问题:有没有办法从 cmake 中找到这个目录?也许是 cmake --config
或 cmake --libs
模式(有点像 pkg-config?)
否则,是否有人对发生这种情况的原因以及如何解决它有任何建议。
您可以在本地进行,因为您很可能不使用基于 linux 的平台,例如 windows 或 mac。这是因为 linux 文件系统区分大小写。这意味着 CmakeDependentOption
不同于 CMakeDependentOption
。
Docker 在 linux 中运行容器,因此文件名将区分大小写,如果大小写不同,包含将失败。
我有一个在本地成功构建的 cmake 项目,但出现错误
include could not find load file:
CmakeDependentOption
尝试在 CI 平台或 Docker 中构建时。注意 CMakeDependentOption.cmake 是 cmake 自带的脚本。所以它应该是可用的。关于CI安装cmake,我wget
从他们的下载页面发布了相关的cmake,解压并将bin目录添加到PATH
环境变量。然后我使用 cmake
命令来构建我的库。结果就是上面的错误。
我怀疑这意味着 CMake 变量(例如“CMAKE_MODULE_PATH”但不是,因为这个变量在 cmake 脚本开始时似乎是空的)被弄乱了或没有设置。 include
的正确文件路径是
<cmake_root>/share/cmake-3.18/Modules/CMakeDependentOption.cmake
并且我已手动验证它存在。我的问题:有没有办法从 cmake 中找到这个目录?也许是 cmake --config
或 cmake --libs
模式(有点像 pkg-config?)
否则,是否有人对发生这种情况的原因以及如何解决它有任何建议。
您可以在本地进行,因为您很可能不使用基于 linux 的平台,例如 windows 或 mac。这是因为 linux 文件系统区分大小写。这意味着 CmakeDependentOption
不同于 CMakeDependentOption
。
Docker 在 linux 中运行容器,因此文件名将区分大小写,如果大小写不同,包含将失败。