add_definitions vs. configure_file - PullRequest
       4

add_definitions vs. configure_file

2 голосов
/ 23 сентября 2010

Мне нужно условно скомпилировать несколько частей кода, в зависимости от того, есть ли в системе какие-то библиотеки или нет.Их присутствие определяется на этапе настройки CMake, и я планирую сообщить компилятору результаты, используя определения препроцессора (например, #ifdef (LIB_DEFINED) ... #endif).

Я знаю о двух возможностях достижения этого в CMake:

  1. Создайте файл шаблона с этими определениями препроцессора, передайте его в CMakeLists в configure_file () и, наконец, #include произведенныйфайл конфигурации в каждом исходном файле
  2. Непосредственно используйте add_definitions (-DLIB_DEFINED) в CMakeLists.

Первый подход кажется мне более сложным, поэтому есть ли какие-либо преимущества использования его вместовторой (например, чтобы избежать проблем с переносимостью)?

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

Подход 1 часто предпочтительнее, так как вы также можете установить этот файл в качестве настроенного заголовка, позволяя другим проектам, использующим / ссылающимся на ваш код, использовать те же настройки. Также можно проверить файл и посмотреть, как настроен проект. Оба подхода будут работать, и иногда add_definitions является лучшим подходом (одно или несколько определений, нет преимуществ в сохранении этих определений после первоначальной компиляции).

1 голос
/ 23 сентября 2010

В зависимости от количества используемых библиотек, вызов компилятора становится большим, если следовать второму подходу.Поэтому я бы сказал, что для небольших проектов, в которых только 2-3 из этих необязательных библиотек следуют подходу 2, но если он больше похож на 10, лучше следуйте подходу 1, чтобы выходные данные компиляции оставались читаемыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...