假设我正在编译(静态)库libfoo.a提供头文件foo.h.我将链接我的应用程序APP反对libfoo.a和#include在我的源代码中。libfoo正在使用CMake作为具有用户定义变量的构建系统,例如BUILD_WITH_OPTION_BAR作为定义传递给编译器:ADD_DEFINITIONS(BUILD_WITH_OPTION_BAR)内部foo.h我们会找到#ifdef使用此选项的声明:#ifdefBUILD_WITH_OPTION_BARtypedeflonglongintfooInt;#elsetypedefintfooInt;#endif我的问题是:我应该如何知道我的
我已经从C++源代码构建了一个共享库(.dll)。现在,当我想在另一个程序中使用这个库时,我是否需要包含最初用于构建库的所有头文件,或者只包含属于我的(新)程序中使用过的函数的头文件够了吗?库中有许多函数在我的新程序中没有直接使用,但是,不用说,它们都被程序中的函数使用了。(所以它们也在程序中间接使用,如果不需要包含它们才奇怪。) 最佳答案 头文件并没有什么神奇之处,它们只是确保您的.cpp文件可以访问它需要的所有声明和定义的便捷方式。因此,仅在每个文件中包含您实际需要的内容(1)。以上是指在您的文件中放置#include语句——仅
我有一个具有以下文件结构的项目:project||------->lib1||---->lib1.h||------->lib2||---->lib2.h||------->main.cclib1和lib2两个库只包含头文件,而lib2.h包含lib1.h,main.cc包含lib2.h。我现在如何编写这个项目的cmake文件?我试图创建一个interfacelibrary对于lib2,但编译器找不到lib1.h。以下是我的cmake文件的内容:lib2的CMakeLists.txt:add_library(lib2INTERFACE)target_sources(lib2INTERF
在尝试开始在框架中使用Swift时(包括打开模块支持),我开始收到这样的消息:[snip]/:1:1:Umbrellaheaderformodule'PressKit'doesnotincludeheader'NPKBaseAppearance.h'有问题的header(大约有10个)没有在PressKit.h中列出,但有充分的理由——它们包括我不想向大多数用户公开的内部或很少使用的类和类别我的框架。(其中一些我想在选定的地方公开;其他人永远不应该公开。)将header标记为私有(private)似乎没有帮助。这是我框架项目中的一个警告,但在使用该框架的每个目标中都是一个错误,所以我不