我正在开始一个多平台(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上使用相同的结构和CMakeLists以及MinGW生成器,我会得到编译错误,因为位于build目录下的qt生成的文件(通过moc和uic)在我的子项目中找不到我的头文件。一些qt生成的头文件/源文件依赖于我的头文件/源文件,因为我在.ui文件中使用了提升的小部件,这些小部件指向源代码中的实现。同样,在Visual Studio / NMake下,一切编译正常。
作为一种变通方法,我可以使用运行良好的源代码构建,也可以在全局CMakeLists.txt上添加以下内容:
include_directories(
mystuff/subprojectA
mystuff/subprojectB
)但是什么才是正确的解决方案呢?非常感谢!
发布于 2009-11-17 05:46:11
在我正在处理的一个项目中,我使用以下语句来处理CMakeLists.txt中的includes:
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR})关键字是${CMAKE_CURRENT_BINARY_DIR},希望能有所帮助。
附注,如果你使用的是启用了异常的gcc 4.4.x,你可能会想要使用它,这样它就不会链接到windows上的libgcc_s_sjlj-1.dll。
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-static-libgcc")https://stackoverflow.com/questions/1328410
复制相似问题