CMake не может найти существующий файл, используя абсолютный путь - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь создать приложение openFrameworks (которое само по себе является кошмаром), и CMake отказывается признать существование другого файла CMake, необходимого для связывания всех библиотек openFrameworks.Этот другой файл 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 проекта находится в главной директории проекта, но я не думаю, что это должно быть проблемой, учитывая, что я не использую относительные пути.

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

Не могли бы вы попробовать следующее:

Добавьте путь, содержащий дополнительные файлы 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)

Затем используйте его либо в том же файле верхнего уровня, либо в файле cmake, который был введен в сборку с помощью вызова add_subdirectory.

include(main)

См. https://cgold.readthedocs.io/en/latest/tutorials/cmake-sources/includes.html#include-custom для хорошего руководства по этой теме.

1 голос
/ 19 июня 2019

Так довольно смущающе, я не понимал, что фактический каталог был openFrameworks, а не openframeworks.Это то, что происходит в 2 часа ночи ...

...