Я запускаю мультиплатформенный (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), лежащие в каталоге build, не могут найти мои заголовочные файлы в моих подпроектах. Некоторые из сгенерированных qt заголовочных / исходных файлов зависят от моих заголовочных / исходных файлов, потому что я использую продвинутые виджеты в моих .ui-файлах, которые указывают на реализацию в моем источнике. Снова под Visual Studio / NMake все компилируется нормально.
В качестве обходного пути я могу использовать встроенную сборку, которая работает нормально, или я могу добавить следующее в глобальный CMakeLists.txt:
include_directories(
mystuff/subprojectA
mystuff/subprojectB
)
Но каково правильное решение? Большое спасибо !!