我正在启动一个多平台(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 生成器时,一切正常。如果我在 Linux 或 Windows 下使用 MinGW 生成器使用相同的结构和 CMakeLists,则会出现编译错误,因为构建目录下的 qt 生成文件(通过 moc 和 uic)无法在我的子项目中找到我的头文件。一些 qt 生成的头文件/源文件依赖于我的头文件/源文件,因为我在 .ui 文件中使用提升的小部件,这些小部件指向我的源代码中的实现。再次在 Visual Studio / NMake 下一切编译正常。
作为一种解决方法,我可以使用运行良好的源代码构建,或者我可以在全局 CMakeLists.txt 中添加以下内容:
include_directories(
mystuff/subprojectA
mystuff/subprojectB
)
但是什么是正确的解决方案?非常感谢你!!