C++ C++;如何创建';全球';图书馆
我正在做一个项目,它的行是:C++ C++;如何创建';全球';图书馆,c++,C++,我正在做一个项目,它的行是:#include 现在我可以简单地下载和制作。但我如何使它成为一个“全球”图书馆 我曾尝试将其添加到$PKG\u CONFIG\u路径,但似乎不起作用。我经常会遇到这样的错误:main.c:30:10:致命错误:“fftw3.h”文件找不到 所以我的问题是:我需要在哪里创建fftw库(或任何相关的库)以使其全球可访问 注意:我可能会错误地使用术语“全局”,在这种情况下,请让我知道正确的术语是什么 更新:命令是: gcc -Wall -march=native -O3
#include
现在我可以简单地下载和制作。但我如何使它成为一个“全球”图书馆
我曾尝试将其添加到$PKG\u CONFIG\u路径
,但似乎不起作用。我经常会遇到这样的错误:main.c:30:10:致命错误:“fftw3.h”文件找不到
所以我的问题是:我需要在哪里创建fftw库(或任何相关的库)以使其全球可访问
注意:我可能会错误地使用术语“全局”,在这种情况下,请让我知道正确的术语是什么
更新:命令是:
gcc -Wall -march=native -O3 -ffast-math `pkg-config --cflags fftw3` `pkg-config --cflags sndfile` -c -o main.o main.c
main.c
包含行
#include <fftw3.h>
#包括
我认为没有你所说的确切答案——没有“全局”库,因为“fftw3.h”是一个头文件
这里有三件事:
1)找到头文件的位置
2)找到静态(或存根/导入)库的位置
3)您可以在其中找到动态库(在运行时)
对于1),答案是“取决于构建工具的配置”。
第二条也是如此。对于3,它通常“在路径中,与可执行文件在同一文件夹中,在当前目录中,或在特定于平台的目录中”。对于Windows、Linux或其他平台,情况可能略有不同
简而言之,您需要为它配置构建工具
编辑:
既然我们知道了您的工具是什么,我建议您阅读这个简短的页面,解释GCC如何查找标题(您的.h文件)。您可以将头文件放在其中一个搜索路径(sloppy!),也可以将“额外”头文件放在您选择的目录中,并使用“-I”参数将其添加到编译命令中
我认为没有你所说的确切答案——没有“全局”库,因为“fftw3.h”是一个头文件 这里有三件事: 1)找到头文件的位置 2)找到静态(或存根/导入)库的位置 3)您可以在其中找到动态库(在运行时) 对于1),答案是“取决于构建工具的配置”。 第二条也是如此。对于3,它通常“在路径中,与可执行文件在同一文件夹中,在当前目录中,或在特定于平台的目录中”。对于Windows、Linux或其他平台,情况可能略有不同 简而言之,您需要为它配置构建工具 编辑: 既然我们知道了您的工具是什么,我建议您阅读这个简短的页面,解释GCC如何查找标题(您的.h文件)。您可以将头文件放在其中一个搜索路径(sloppy!),也可以将“额外”头文件放在您选择的目录中,并使用“-I”参数将其添加到编译命令中
使用
包含文件通常是不好的做法,它增加了同名文件变得模棱两可的风险(尤其是在大型项目上)
您可以通过使用-I
编译器选项指定其他全局包含目录来实现这一点。然而,并没有最好的方法来实现这一点(这取决于项目的组织方式和规模)
按绝对路径包含:
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
优点:
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
- 不可能发生名称冲突,给定任何相对路径,仅存在1个文件
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
- 您不能移动文件,否则需要更改相对路径(不过IDE的重构工具可能会有帮助)
-I
目录,因此如果您滥用该功能,可能会增加编译时间
当然,即使在使用globalinclude时,我也更喜欢只添加一个额外的目录并对其进行组织,这样编译器就不必猜测路径
Include
+FolderNameSpace1
+FolderNameSpace2
因此,我只需在包含时添加名称空间
#include <FolderNameSpace1/File1>
你只需要做:
gcc -Wall -march=native -O3 -ffast-math -I../FFWT/includes c -o main.o main.c
(我假设您是从“您的文件夹”中调用GCC的)
如何添加其他全局包含目录:
包含文件通常是不好的做法,它增加了同名文件变得模棱两可的风险(尤其是在大型项目上)
您可以通过使用-I
编译器选项指定其他全局包含目录来实现这一点。然而,并没有最好的方法来实现这一点(这取决于项目的组织方式和规模)
按绝对路径包含:
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
优点:
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
- 不可能发生名称冲突,给定任何相对路径,仅存在1个文件
#include <file>
#include <somepath/file2>
#include "../file"
#include "../somepath2/file2"
- 您不能移动文件,否则需要更改相对路径(不过IDE的重构工具可能会有帮助)
-I
目录,因此如果您滥用该功能,可能会增加编译时间
当然,即使在使用globalinclude时,我也更喜欢只添加一个额外的目录并对其进行组织,这样编译器就不必猜测路径
Include
+FolderNameSpace1
+FolderNameSpace2
因此,我只需在包含时添加名称空间
#include <FolderNameSpace1/File1>
你只需要做:
gcc -Wall -march=native -O3 -ffast-math -I../FFWT/includes c -o main.o main.c
(我假设您是从“您的文件夹”中调用GCC的)
如何添加其他全局include directo