CMake 无法使用绝对路径找到现有文件

CMake cannot find existing file using absolute path

我正在尝试构建一个 openFrameworks 应用程序(这本身就是一场噩梦),但 CMake 拒绝承认 link 所有 openFrameworks 库所必需的另一个 CMake 文件的存在。这个另一个 CMake 文件是 linked 的绝对路径,但仍然无法使用

找到它
set( OF_DIRECTORY_BY_USER "/home/jp/openframeworks" )
include(${OF_DIRECTORY_BY_USER}/addons/ofxCMake/modules/main.cmake)

文件肯定在该路径中。我可以在终端和资源管理器中看到它。

完整错误:

CMake Error at CMakeLists.txt:44 (include):
  include could not find load file:

    /home/jp/openframeworks/addons/ofxCMake/modules/main.cmake


-- Configuring incomplete, errors occurred!

项目的 CMakeLists.txt 位于主项目目录中,但考虑到我没有使用相对路径,我认为这应该不是问题。

您可以尝试以下方法吗:

将包含其他 cmake 个文件的路径添加到 CMAKE_MODULE_PATH,在您的例子中是 /home/jp/openframeworks/addons/ofxCMake/modulescmake 可执行文件在搜索 cmake 文件时将查看存储在该变量中的文件夹列表。

# In your top-level CMakeLists.txt
list(APPEND CMAKE_MODULE_PATH /home/jp/openframeworks/addons/ofxCMake/modules/cmake)

请注意,一旦它开始工作,您就可以使用 cmake 管理的变量,而不是 hard-coding 保存自定义模块的 cmake 文件夹的完整路径可执行文件,使您的 cmake 文件更具可移植性。例如:

list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/addons/ofxCMake/modules/cmake)

然后在同一个 top-level 文件或通过 add_subdirectory 调用引入构建的 cmake 文件中使用它。

include(main)

有关此主题的精彩教程,请参阅 https://cgold.readthedocs.io/en/latest/tutorials/cmake-sources/includes.html#include-custom

非常尴尬,我没有意识到实际目录是 openFrameworks 而不是 openframeworks。这是早上 2:00 发生的事情...