@warchant
Пишу всё на всём

Как сделать видимыми модули cmake для find_package?

Устанавливаю фреймворк SOFA, сбилдил с помощью cmake по их инструкции, всё хорошо. Он состоит из нескольких модулей: SofaFramework, SofaGui и т.д.

Я пытаюсь написать под него dummy плагин, ниже мой CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.12)
project(Warchant)

set(HEADER_FILES
    MyHeader1.h
)

set(SOURCE_FILES
    MySource1.cpp
)

find_package(SofaGui REQUIRED) # где он ищет его?

add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} SofaCore)


К слову, в build есть папка cmake с файлами SofaFrameworkConfig.cmake и т.д..

Плагин собираю из
/root/sofa/v15.12/src/build/applications/plugins/Warchant/build


На такой CMakeLists высвечивается ошибка:

Could not find a package configuration file provided by "SofaGui" with any
of the following names:

SofaGuiConfig.cmake
sofagui-config.cmake

Add the installation prefix of "SofaGui" to CMAKE_PREFIX_PATH or set
"SofaGui_DIR" to a directory containing one of the above files. If
"SofaGui" provides a separate development package or SDK, be sure it has
been installed.


Погуглил, посоветовали добавить строчку:
list(APPEND CMAKE_PREFIX_PATH "/root/sofa/v15.12/src/build/")


Теперь говорит вот что:

CMake Error at /root/sofa/v15.12/src/build/cmake/SofaFrameworkConfig.cmake:80 (include):
include could not find load file:

/root/sofa/v15.12/src/build/cmake/SofaFrameworkTargets.cmake
Call Stack (most recent call first):
/root/sofa/v15.12/src/build/cmake/SofaSimulationConfig.cmake:29 (find_package)
/root/sofa/v15.12/src/build/cmake/SofaBaseConfig.cmake:29 (find_package)
/root/sofa/v15.12/src/build/cmake/SofaCommonConfig.cmake:29 (find_package)
/root/sofa/v15.12/src/build/cmake/SofaGeneralConfig.cmake:29 (find_package)
/root/sofa/v15.12/src/build/cmake/SofaGuiConfig.cmake:29 (find_package)
CMakeLists.txt:30 (find_package)


И так для каждого *.cmake файла внутри build/cmake/. В каждом файле присутствует
find_package(SofaFramework REQUIRED) # либо другой модуль


То есть find_package не может найти эти модули. Как мне сделать все эти модули видимыми для find_package? Неужели мне вручную каждый *.cmake файл придется править и прописывать нужные ему пути?
  • Вопрос задан
  • 1754 просмотра
Пригласить эксперта
Ответы на вопрос 1
Попробуйте такой вариант

find_package ( SofaGui
PATHS /root/sofa/v15.12/src/build/cmake
REQUIRED
)

Подробнее см. find_package
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы