- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
美好的一天,在完全迁移到 waf (1.7.5) 之前,我尝试创建一个这种结构的简单项目:
wafproject
├── application
│ ├── main.cpp
│ └── wscript
├── library1
│ ├── foo1.hpp
│ ├── foo2.hpp
│ └── wscript
└── wscript
这是根wscript
:
def options(opt) :
opt.load('compiler_cxx')
def configure(cnf) :
cnf.load('compiler_cxx')
def build(bld) :
bld.recurse('library1')
bld.recurse('application')
这是应用程序
wscript
:
def build(bld) :
bld( features = 'cxx cxxprogram'
, target = 'application'
, source = 'main.cpp'
, use = ['library1']
)
这是library1
wscript
def build(bld) :
bld( name = 'library1'
, inludes = '../../'
, export_inludes = '../../'
)
(注意:我已经尝试使用 target
而不是 library1
的 name
,而且我也尝试为 library1
启用 cxx cxxshlib
功能。)
这是main.cpp
:
#include <wafproject/library1/foo1.hpp>
#include <wafproject/library1/foo2.hpp>
int main()
{
}
这是我得到的错误:
Setting top to : /home/<path>/wafproject
Setting out to : /home/<path>/wafproject/build
Checking for 'g++' (c++ compiler) : /usr/bin/g++
'configure' finished successfully (0.038s)
Waf: Entering directory `/home/<path>/wafproject/build'
[1/3] cxxshlib: -> build/library1/liblibrary1.so
[2/3] cxx: application/main.cpp -> build/application/main.cpp.1.o
../application/main.cpp:1:40: fatal error: wafproject/library1/foo1.hpp: Directory or file does not exist.
compilation terminated.
Waf: Leaving directory `/home/<path>/wafproject/build'
Build failed
-> task in 'application' failed (exit status 1):
{task 139729350901264: cxx main.cpp -> main.cpp.1.o}
['/usr/bin/g++', '../application/main.cpp', '-c', '-o', 'application/main.cpp.1.o']
我不想更改我包含 header 的方式,但为此我显然需要更改我的项目设置方式。
我很乐意提供任何意见,谢谢。
编辑:已解决,这只是一个拼写错误(inludes
而不是 includes
和 export_inludes
而不是 export_includes
).
最佳答案
由于这是“header only library waf”在 google 上的第一件事,我认为我应该发布通用解决方案。
bld(name = 'libname', export_includes = 'PATH/TO/lib/')
这对我有用。
关于带有 waf 的 C++ 头文件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326434/
假设我在 /mydir/a/b 中有 x.y 文件(在 Linux 上) 当我运行 waf 时,它没有找到该文件。 def configure(context): pass def build
我正在为我的项目使用 Waf 构建系统。我的项目中有一些依赖项,我并不总是希望对其进行链接和编译。我想知道是否有一种方法可以将额外的参数传递给 Waf 配置和 Waf 安装脚本,我可以在 wscrip
每当我调用“waf clean”时,waf 最终都会清理构建中的所有内容。我想有办法告诉 waf 只清理特定的目标。这样,每当我想再次运行所有单元测试时,我就不必重建所有内容。 例如, 如果我有以下文
我正在使用 Waf 构建一个项目。它有几个第三方依赖项,我想从我的主要 wscript 构建每个依赖项。我的项目是这样组织的: /boost/ /gtest/ /source/ /waf /wscri
我有一个添加了一些选项的 waf 脚本,因此我使用 waflib 中的 Options。 一个最小的工作示例是: from waflib import Context, Options from wa
我想将一个 waf 任务的 target 用作另一个 waf 任务中的 source,但这并没有按预期工作。 一个简单但完整的例子:我添加了两个任务( t_1 , t_2 )我想添加为功能并通过 be
我想使用 waf 触发生成文件来构建其他库。为此,我创建了以下任务: def build(bld): def run(self): bld_dir = self.generat
我想安装使用命令 bld.shlib(...) 构建的库进入 /lib ,其中 arch_suffix 可以是 64 或根据架构为空。 我怎样才能做到这一点? 如果不可能,那么我如何明确指定这个后缀?
我正在使用waf来构建C程序。我想在配置阶段检查是否存在特定的头文件。有没有办法做到这一点? 最佳答案 嗯,有点谷歌搜索找到了我的问题的答案:您可以在Configuration对象上使用check方法
在我的 wscript 中,我在 apply_link 方法之后运行了一些自定义任务(dummy),这工作正常。 在这个dummy任务完成后,我想收集我所有的输出文件(让它成为*.dll,*.exe、
我已经克隆并构建了 waf脚本使用: ./waf-light configure 然后构建我的项目(由 Gomspace 提供)我需要添加 waf和 eclipse.py到我的路径。到目前为止,我还没
我已经设置了带有 WAF 和一些 Web 应用程序的应用程序网关 V2。我还为 Web 应用程序设置了自定义域,并且网关的监听器正在重定向到属于网关正在监听的域的 Web 应用程序。 假设我想阻止外部
我有以下代码片段,用于将文件按原样复制到构建目录: for m in std_mibs: print("Copying", m) bld(name = 'cpstdmib'
class superfoo(Task.Task): def run(self): self.generator.bld.fatal("Oh noes!") 有没有办法退出
我在 Windows 中使用 waf,但我不知道如何使用 boost 工具。 我尝试了 waf update,但它显示以下内容: 无法在远程存储库中找到该工具“更新”成功完成(0.597 秒) 如何在
我在 waf 中有一个目标,它依赖于多个其他文件。有一个程序列出那些依赖项,我想使用它,并传递给 waf。即,如果我有一个目标 T,那么是一个列出T 的所有依赖项的程序。但我不清楚如何通过这个到 bl
在 Waf 中,我如何创建多个可以并行运行的自定义任务(使用 --jobs=JOBS)? Sources = ["C:\\src1.c", "C:\\Mod1\src2.c", ... 30pcs]
我有一个文件,我想在它通过 python 脚本推送后发送到构建目录。我将如何在 waf 中执行此操作? 例如,如果我有这样一个文件: VERSION=%%VERSION%% DATADIR=%%DAT
是否有更好/更短的方法来创建这两个可处理多个文件的任务?我更喜欢 new_task_generator 而不是神秘的类。 Files = ["src1.c", "src2.c"] for Fi
我正在尝试配置 Azure 应用程序网关 WAF,并将后端池设置为不同 Azure 租户中的虚拟机,使用端口 443 上的公共(public) IP 地址。所有 SSL 证书均已正确配置。但是,我在通
我是一名优秀的程序员,十分优秀!