C++ 为什么我可以在本地使用CMake提供的模块(特别是CMakeDependentOption.CMake),但不能在CI或Docker上使用?

C++ 为什么我可以在本地使用CMake提供的模块(特别是CMakeDependentOption.CMake),但不能在CI或Docker上使用?,c++,docker,cmake,module,continuous-integration,C++,Docker,Cmake,Module,Continuous Integration,我有一个cmake项目,它成功地在本地构建,但错误是 include could not find load file: CmakeDependentOption 尝试在CI平台或Docker中构建时。请注意,CMakeDependentOption.cmake是cmake本身附带的脚本。所以它应该是可用的。在要安装cmake的CI上,我从下载页面下载相关的cmake版本,解压缩它并将bin目录添加到环境变量中。然后我使用cmake命令来构建我的库。结果就是上述错误 我怀疑这意

我有一个cmake项目,它成功地在本地构建,但错误是

  include could not find load file:

    CmakeDependentOption

尝试在CI平台或Docker中构建时。请注意,CMakeDependentOption.cmake是cmake本身附带的脚本。所以它应该是可用的。在要安装cmake的CI上,我从下载页面下载相关的cmake版本,解压缩它并将bin目录添加到环境变量中。然后我使用
cmake
命令来构建我的库。结果就是上述错误

我怀疑这意味着CMake变量(例如“CMake_MODULE_PATH”,但并非如此,因为该变量在CMake脚本开始时似乎是空的)被弄乱或没有以某种方式设置。指向
包含的正确文件的路径为

<cmake_root>/share/cmake-3.18/Modules/CMakeDependentOption.cmake
/share/cmake-3.18/Modules/CMakeDependentOption.cmake
我已经手动验证了它的存在。我的问题是:有没有办法从cmake中找到这个目录?可能是
cmake--config
cmake--libs
模式(有点像pkg-config?)


如果做不到这一点,有没有人对为什么会发生这种情况以及如何避免这种情况有任何建议。

您可以在本地进行,因为您很可能不使用基于linux的平台,如windows或mac。这是因为linux文件系统区分大小写。这意味着
CmakeDependentOption
不同于
CmakeDependentOption


Docker在linux中运行容器,因此文件名将区分大小写,如果大小写不同,则include将失败。

这看起来像是您的输入错误
CmakeDependentOption
vs
CmakeDependentOption
在区分大小写的文件系统上是不同的。是的,就是这样。我觉得有些可疑。谢谢