1

我正在定制通过 cmake 构建的 qgis 源代码。

它有一个包含许多子目录的源代码树(其中也包含子目录)。

整个源代码树分为几个模块,如core,具有GIS核心组件,gui负责gui,app,负责主应用程序(包含main.cpp)和其他模块。

问题是我遇到了一个需要访问不同模块中的静态类成员的要求。准确地说是 Gui 模块中 QgisApp 类的一些成员。

因此,在 gui 模块的 .cpp 之一中正常包含 qgisapp.h 给了我对我想要访问的 mamber 的未定义引用。后来我将 .h 和 .cpp 包含在位于 Gui 内的 CMakeLists.txt 文件中模块的根目录,然后再次运行 cmake 以使 Makefile 具有正确的包含。但是如果未定义的引用很多,这实际上会增加数量(可能是因为我添加到 CMakeLists.txt 中的 .h 和 .cpp 本身包含其他 . h 和 .cpp 在应用模块自己的 CMakeLists.txt 中有引用)。

那么,如何在其他模块中使用某个模块的某个类的成员,这些模块是用放置在其各自根目录中的不同 CMakeLists.txt 集构建的?

这个问题与qgis没有特别的关系,但可以遇到与qgis类似的任何源代码树。所以它基本上是一个与Cmake相关的问题。

希望我能够解决我的问题。

帮助将不胜感激。

谢谢。

4

1 回答 1

1

target_link_libraries应该做你正在寻找的东西。如果这不起作用,您可以尝试发布一些示例 CMake 代码吗?

于 2009-07-26T17:02:35.897 回答