Я начинаю мультиплатформенный (Win Xp, Linux) проект qt. Я хочу использовать сборку из исходного кода, поэтому моя структура каталогов выглядит следующим образом:
project/
CMakeLists.txt (global CMake file, includes other CMakeLists)
build/ (my build directory)
libA/
CMakeLists.txt
mystuff/
subprojectA/
CMakeLists.txt
subprojectB/
CMakeLists.txt
Поэтому, когда я использую это в Windows с генератором Visual Studio, все строится нормально. Если я использую ту же структуру и CMakeLists в Linux или под Windows с генератором MinGW, я получаю ошибки компиляции, потому что сгенерированные qt файлы (через moc и uic), лежащие в каталоге сборки, не могут найти мои заголовочные файлы в моих подпроектах. Некоторые из сгенерированных qt заголовочных/исходных файлов зависят от моих заголовочных/исходных файлов, потому что я использую продвигаемые виджеты в своих файлах .ui, которые указывают на реализацию в моем источнике. Опять же под Visual Studio/NMake все нормально компилируется.
В качестве обходного пути я могу использовать исходную сборку, которая работает нормально, или я могу добавить следующее в глобальный CMakeLists.txt:
include_directories(
mystuff/subprojectA
mystuff/subprojectB
)
Но каково правильное решение? Большое спасибо!!