GOOGLE ADS

воскресенье, 1 мая 2022 г.

CMake: в чем преимущество использования -D (командной строки) над add_compile_definitions или target_compile_definitions или set?

Новое в CMake. При добавлении библиотек я вижу много инструкций, говорящих:

cmake -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl

Почему это предпочтительнее, чем помещать его в настоящий CMakeLists.txt? например

set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")


Решение проблемы


  • Вы не фиксируете первый в репозиторий, в то время как вы либо фиксируете второй, либо должны быть осторожны, чтобы не зафиксировать его с другими вещами.

  • Второй метод обычно используется, чтобы разрешить пользователям какого-либо проекта изменять некоторые аспекты этого проекта. Таким образом, все, что относится к самому проекту (не настраиваемое), передается прямо в файлы CMake, все остальное может быть предоставлено из командной строки.


Также обратите внимание, что пресеты CMake добавляют возможность настраивать сборку вне файлов CMake, поэтому я ожидаю, что метод предоставления переменных напрямую через консольный вызов исчезнет и будет заменен пресетами. Но то, как они работают, осталось прежним: переменные, определенные в пресете, попадают в кеш CMake со сгенерированным вызовом консоли (в IDE может быть по-другому).

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...