我正在定制通过 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相关的问题。
希望我能够解决我的问题。
帮助将不胜感激。
谢谢。