当前位置: 首页 > 知识库问答 >
问题:

CMake项目中应用程序与库的解耦

汪德寿
2023-03-14

我有一个项目被配置为:

CMake项目

  • 静态库A src(取决于B)
    • 静态Lib B src(取决于Qt)

共有1个答案

慕容宏毅
2023-03-14

在C++中使用静态库不会引入它们的依赖项,因此在链接可执行文件时必须显式地指定它们(与动态库相比)。

静态库本质上是一个预编译的函数存档(对象文件),这些函数通过C++链接器链接到应用程序中,方式与任何其他对象文件类似。因此,它不包括有关其依赖项的信息。

共享(动态)库是一个更复杂(也更通用)的东西,允许在运行时加载和链接代码。这是由动态链接器完成的,它还将递归地为它带来加载库的任何依赖项。

 类似资料:
  • 我有以下项目结构: cmakelists.txt lib1/cmakelists.txt以及lib的所有cpp和头文件 lib2/cmakelists.txt以及lib的所有cpp和头文件 app/cmakelists.txt和应用程序的所有cpp和头文件 它生成了我想要的源代码外的VS.sln文件,但是应用程序不能编译,因为它找不到lib1的头文件(显然)。 现在,我阅读并尝试了许多方法,比如(

  • 我将描述我的CMake项目目前是如何安排的。现在还早,所以欢迎提出更好的安排。 顶级 lib1 lib2 我在每个级别上都有cmakelists.txt。 在Lib1 I add_library(STATIC)中,然后使用Lib2 target_link_library,它也是静态的。 lib2的cmakelists.txt执行对Qt5Widgets、Qt5Core和qt5gui的find_pac

  • 我是cmake的新手,我想使用C++和最新的mongodb cxx驱动程序连接到mongodb。我设法编译并安装了驱动程序,但现在我坚持在我的cmake项目中使用它。 我使用默认设置安装了mongodb驱动程序,所以它位于/usr/local/lib/include/mongoCxx/v_noabi/mongoCxx下。 include_directories(/usr/local/lib/inc

  • 我对分级建造系统和智能是新的。 那么我如何创建一个Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app),并使构建系统在应用程序项目上包含com.myapp.lib1呢? 我转到Project Structure->Modules->我的App项目,并向lib项目添加了一个依赖项。IntelliJ现在在应用程序项目中使用时可以从lib项目中识别类,

  • 今天我在android工作室开始了一个新的项目。一切顺利,没有差错。添加项目后,我借助android Studio中的Firebase助手工具,将项目与Firebase实时数据库进行了连接。 然后我得到这个错误: 我看到错误主要来自于在我的应用程序级别文件的末尾添加了这一行。因为当我把它评论出来的时候,它构建的很好。 我的项目::

  • 我想知道IDE中的Jave EE项目和Java Web项目在方面的主要区别。事实上,如果选择Java web类别,您可以在IDE中基于、和JavaServer Faces创建web应用程序。 另一方面,选择项目类别为Jave EE项目,NetBeans IDE将创建3个子项目,例如:StoreApp(企业应用项目)、StoreApp-ejb(EJB项目)和StoreApp-war(Web项目)。