LINUX.ORG.RU

Глобальные дефайны в проекте

 , defines,


0

1

Есть CMake проект. Некоторые его части находятся в блоках #ifdef VAR и #ifndef VAR . QtCreator не выполняет разбор и не подсвечивает такие блоки, если в проекте нету определения VAR.
В cmake проекте, как я понял, определить VAR можно с помощью ADD_DEFINITIONS(-DVAR), но QtCreator не обращает внимания на это.

Где-то в интернетах находил, что это бага QtCreator и в версии 2.6 это исправят. Но может быть у лоревцев есть какой-нибудь хитрый метод победить QtCreator, не собирая версию 2.6.

Хитрый метод заключается в использовании Eclipse. У него свои чудачества конечно, но при правильной настройке проекта индексер все парсит замечательно.

m0rph ★★★★★
()

Кстати вместо add_definitions можешь попробовать генерировать целый заголовочник с помощью configure_file. Сделаешь ему #include в нужных местах, прогонишь 1 раз cmake и теоретически индексер QtCreator'а должен будет увидеть все #define'ы.

m0rph ★★★★★
()
Ответ на: комментарий от m0rph

Кстати вместо add_definitions можешь попробовать генерировать целый заголовочник с помощью configure_file. Сделаешь ему #include в нужных местах, прогонишь 1 раз cmake и теоретически индексер QtCreator'а должен будет увидеть все #define'ы.

Хорошая идея, только #include делать не нужно. Вместо этого достаточно сгенерированный файл сохранить в файл ${project_name}.config в корне проекта. QtCreator его интерпретирует на лету как глобальный заголовочник для всех исходников.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

QtCreator его интерпретирует на лету как глобальный заголовочник для всех исходников

Интересная возможность, не знал о таком. Только возникает вопрос: а отдельно от QtCreator проект сможет собраться с помощью CMake в этом случае?

m0rph ★★★★★
()
Ответ на: комментарий от m0rph

Имелось в виду конечно же, чтобы при add_definitions() инструкция попадала одновременно в .config-файл. Лучше всего было бы добавить отдельное правило сборки, которое читает CXX_DEFINES из flags.make и конвертирует его в .config-файл. Или научить QtCreator понимать flags.make с помощью какого-нибудь плагина, в том числе для Makefile-проектов.

Пока набиваю .config-файл руками. Недостаток ещё и в том, что для разных конфигураций проекта макросы разные, а .config-файл один.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Создал файл с именем .config в корне проекта (пытался и с помощью vim и с помощью qtcreator (добавление нового файла в проект)), но желаемого результата так и не получил. QtCreator упорно не хочет видеть блок
#ifdef MYSQL_SERVER
хотя в .config писал #define MYSQL_SERVER 1

sol_linux ★★
() автор топика
Ответ на: комментарий от sol_linux

Должно быть не .config, а my_project.config, если проект лежит в my_project.creator.

Вполне возможно, что для не-Makefile-проектов он его игнорирует. У меня все CMake-проекты — это Makefile-проекты. В итоге понял, что плагин для CMake даёт практически никаких преимуществ по сравнению с обычным Makefile-проектом.

Dendy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.