我正在尝试构建一个openFrameworks应用程序(这本身就是一场噩梦),并且CMake拒绝承认存在链接所有openFrameworks库所需的另一个CMake文件。另一个CMake文件与绝对路径链接,但仍无法使用
找到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位于主项目目录中,但是考虑到我没有使用相对路径,我认为这应该不是问题。
答案 0 :(得分:2)
您可以尝试以下方法吗?
将包含其他cmake
文件的路径(在您的情况下为/home/jp/openframeworks/addons/ofxCMake/modules
)添加到CMAKE_MODULE_PATH
。 cmake
可执行文件在搜索cmake
文件时将浏览该变量中存储的文件夹列表。
# In your top-level CMakeLists.txt
list(APPEND CMAKE_MODULE_PATH /home/jp/openframeworks/addons/ofxCMake/modules/cmake)
请注意,一旦它可以正常工作,您可以使用由cmake
可执行文件管理的变量来使您的代码不再是硬编码包含自定义模块的cmake
文件夹的完整路径。 cmake文件更加便携。例如:
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/addons/ofxCMake/modules/cmake)
然后在同一个顶级文件中或在通过add_subdirectory
调用引入到构建中的cmake文件中使用它。
include(main)
有关该主题的不错的教程,请参见https://cgold.readthedocs.io/en/latest/tutorials/cmake-sources/includes.html#include-custom。
答案 1 :(得分:1)
非常令人尴尬的是,我没有意识到实际目录是openFrameworks
而不是openframeworks
。这就是早上2:00发生的事情...