Cmake的未定义引用链接错误

时间:2009-04-15 05:54:28

标签: cmake qgis

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

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

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

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

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

那么我怎么能在一些其他模块中使用某个模块类的成员呢?这个模块是用不同的CMakeLists.txt集合构建的,它们放在各自的根目录下?

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

希望我能够澄清我的问题。

帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

target_link_libraries应该做你想要的。如果这不起作用,请尝试发布一些示例CMake代码吗?