Как узнать в CMake, что мы генерируем пакет?

Я хочу часть CMakeLists.txt файл, который будет игнорироваться при вызове пользователя

make package

Поэтому я ищу переменную, такую ​​как CMAKE_COMMAND или CMAKE_PACKAGING, чтобы я мог сделать

if (CMAKE_COMMAND EQUAL 'package') ...

или же

if (CMAKE_PACKAGING) ...

Это существует? Это может быть достигнуто?

1 ответ

Решение

CMake генерирует файлы make, которые содержат некоторые "предварительно определенные" цели make, которые следуют соглашениям, ожидаемым теми, кто их использует. Цели, такие как все, установить, упаковать и протестировать.

Как правило, цели установки "install" и "package" по умолчанию зависят от цели "all" make. (Так что, если вы наберете "make install", сначала будет "make all", чтобы убедиться, что все обновлено до установки. Аналогично "package".)

На самом деле "make package" вызывает cpack под прикрытием:

/full/path/to/cpack --config ./CPackConfig.cmake

Вы можете увидеть, что эта командная строка вызывается, если вы выполните:

make package VERBOSE=1

Какую часть вашего файла CMakeLists.txt вы хотите пропустить в упаковке? Нет такой переменной, как та, которую вы ищете, потому что упаковка не происходит во время настройки CMake; это происходит позже, после времени сборки, когда пользователь явно вызывает 'make package' или 'cpack'.

Другие вопросы по тегам