我正在开发一个包含以下行的项目:django.template.context_processors.request
现在我可以简单地下载并制作fftw。但是我如何才能使它成为一个全球性的'库中?
我尝试将其添加到TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True,
'DIRS': (
PROJECT_DIR.child('templates'),
),
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
],
'debug': DEBUG
}
},
]
,但这似乎不起作用。我经常遇到这个错误:#include <fftw3.h>
所以我的问题是:我需要在哪里制作fftw库(或任何图书馆)才能使其全局可访问?
注意:我可能会错误地使用全球一词,在这种情况下,请告诉我正确的术语是什么。
更新:命令为:
$PKG_CONFIG_PATH
main.c:30:10: fatal error: 'fftw3.h' file not found
包含
gcc -Wall -march=native -O3 -ffast-math `pkg-config --cflags fftw3` `pkg-config --cflags sndfile` -c -o main.o main.c
答案 0 :(得分:0)
我不认为你提出的方式有一个确切的答案 - 没有&#34;全球&#34;库,因为&#34; fftw3.h&#34;是一个头文件。
这里有三件事: 1)您找到标题文件的位置 2)您在哪里找到静态(或存根/导入)库 3)您在哪里找到动态库(在运行时)
对于1),答案是&#34;取决于构建工具的配置&#34;。 所以是2)。对于3,它通常是&#34;在路径中,与可执行文件在同一文件夹中,在当前目录中,或在特定于平台的目录中#34;。对于Windows,Linux或其他平台,它会略有不同。
简而言之,您需要为其配置构建工具。
编辑: 既然我们知道你的工具是什么,我建议你阅读这个简短的页面,解释GCC如何查找标题(你的.h文件)。您可以将头文件放在其中一个搜索路径中(草率!,不推荐),或者将您的&#34;额外&#34;在您选择的目录中的标题,并使用&#34; -I&#34;将其添加到编译命令中参数。
答案 1 :(得分:0)
beign能够使用<file>
包含文件通常是不好的做法,它会增加同名文件成为ambiguos的风险(特别是在大型项目中)。
您可以通过使用-I
编译器选项指定其他全局包含目录来实现此目的。然而,没有最好的方法来实现这一目标(这取决于项目的组织方式和规模)。
按绝对路径加入:
#include <file>
#include <somepath/file2>
<强>优点:强>
<强>缺点:强>
按路径相对于源文件包含:
#include "../file"
#include "../somepath2/file2"
<强>优点:强>
<强>缺点:强>
我绝对喜欢使用标准库内容的绝对路径,最后 FEW 其他依赖项,否则我只使用相对路径。您应该注意,当编译器搜索全局包含文件时,它将搜索所有提供的-I
目录,因此如果您滥用该功能,则可能会增加编译时间。
当然即使使用全局包含,我更喜欢只添加一个额外的目录并组织它以便编译器不必猜测路径
Include
+FolderNameSpace1
+FolderNameSpace2
所以我只需在包含
时添加命名空间#include <FolderNameSpace1/File1>
一些开源项目,考虑到这个问题,但是由于并非所有人都愿意花太多时间组织文件夹结构,他们的开发人员使用更简单的策略在Header文件名前加一个后缀(以避免名称冲突) )..在食人魔的例子中你必须这样做:
#include <OgreFileName>
//or (depending on how your project is organized)
#include "../Deps/OgreFileName"
所以在一些前提下,回答你的问题,
你必须添加&#34;全局包含目录&#34;包含您要使用的所有包含文件的目录,因此,如果您正在使用GCC,并且您的项目组织如下:
Project
+FFWT
+includes
+yourfolder
+yoour files
你只需这样做:
gcc -Wall -march=native -O3 -ffast-math -I../FFWT/includes c -o main.o main.c
(我假设您从内部调用GCC&#34;您的文件夹&#34;)
如何添加其他全局包含目录: