У меня есть подкаталог проект:Условный сборки статической библиотеки, которая более чем один исполняемый файл зависит в QMAKE
//exaple.pro
TEMPLATE = subdirs
SUBDIRS += \
myLib \
executable_one \
executable_two
myLib
статическая библиотека с одной функции в ней:
//MyLib.h
void foo();
//MyLib.cpp
#include "MyLib.h"
#include <iostream>
void foo()
{
# ifdef MY_DEFINE
std::cout << "MY_DEFINE is defined\n";
# else
std::cout << "MY_DEFINE is undefined\n";
# endif
}
И два других проекта которые связаны с этой библиотекой executable_one
и executable_two
. В одном я хочу определить MY_DEFINE
, в другом нет. Поэтому я попытался добавить DEFINES += MY_DEFINE
в файл executable_one.pro
, но в обоих случаях вывод «MY_DEFINE undefined». Я понимаю, что myLib
был скомпилирован без этого флага перед исполняемым файлом, а затем был просто связан с ним без изменения, но есть ли способ сделать библиотеку построенной дважды и для одного из исполняемых файлов передать эту опцию компилятора в библиотеку?
Наконец, я решил переименовать 'myLib.pro' в' myLib.pri', создать два файла pro 'myLibWithDef.pro' и' myLibWithoutDef.pro'. В обоих включил 'myLib.pri', и в одном из них я добавил' DEFINES + = MY_DEFINE'. – VALOD9
Отлично, я не часто использую .pri-файл, но это хороший способ исправить вашу проблему здесь. – jpo38