【问题标题】:Cmake's undefined reference linking errorCmake的未定义参考链接错误
【发布时间】:2010-10-19 12:35:49
【问题描述】:

我正在自定义通过 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 包括在应用程序模块自己的 CMakeLists.txt 中有引用的其他 .h 和 .cpp)。

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

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

希望我能解决我的问题。

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: cmake qgis


    【解决方案1】:

    target_link_libraries 应该可以满足您的需求。如果这不起作用,您可以尝试发布一些示例 CMake 代码吗?

    【讨论】:

      猜你喜欢
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多