Как ограничить команды cmake, основанные на том, какая цель построена - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть проект cmake, который производит несколько исполняемых файлов.Я хочу упаковать каждый исполняемый файл в отдельные контейнеры Docker, поэтому в Dockefile я создал только нужную мне цель:

RUN mkdir build \
    && cd build \
    && cmake /app/project -DCMAKE_BUILD_TYPE=Release
    && make -j 2 myExecutable \
    && make install/fast

Это работает, как и ожидалось, но я столкнулся с проблемой с интеграция conan cmake .Установка выполняется при вызове cmake, а не во время фактической сборки - это означает, что независимо от того, какую цель я хочу на самом деле собрать, все вызовы установки conan, присутствующие в моих файлах cmake, вызываются - таким образом, устанавливается больше пакетов, чем необходимо.

# for every target
# include conan dependencies (each target has its own conanfile.txt)
conan_cmake_run(CONANFILE conanfile.txt
        BASIC_SETUP CMAKE_TARGETS
        BUILD_TYPE "${CMAKE_BUILD_TYPE}"
        BUILD outdated
        ${update_conan}
        )
conan_target_link_libraries(${PROJECT_NAME})

Есть ли способ сделать вызовы cmake зависимыми от того, какую цель я на самом деле хочу построить?

1 Ответ

0 голосов
/ 20 февраля 2019

К сожалению, нет, макрос conan_cmake_run не имеет никакого различия относительно того, какая цель задействована или даже была выполнена ранее.Вы можете использовать параметры CMake для запуска или нет conan_cmake_run.

Кроме того, вы можете прокомментировать / проголосовать за ваш запрос по вопросу https://github.com/conan-io/cmake-conan/issues/105

С уважением!

...