我遇到的问题是尝试使用单独的目录进行构建输出。特别是,我有以下目录/文件结构:
src/
Example/
Hello.gyp
HelloWorld.cpp
HelloWorld.h
Util.h
bld/
Example/
Hello.gyp看起来像这样:
{
'targets': [
{
'target_name': 'generated_code',
'type': 'none',
'actions': [
{
'action_name': 'cpp_compile',
'inputs': [
'HelloWorld.cpp',
],
'outputs': [
'a.out',
],
'action': [
'g++', '<(_inputs)',
],
},
],
},
],
}
我想要做的是使用忍者生成bld / Example / a.out(不做像mv
这样的事情)。我尝试过以下方法:
(1)
% cd src/Example
% gyp Hello.gyp --depth=. --generator-output=../../bld/Example -f ninja
% cd ../../bld/Example
% ninja -C out/Default
ninja: Entering directory `out/Default'
[1/1] ACTION generated_code: cpp_compile_b5a6de50eda755567ffb7e384fc76492
% ls
out
% ls ../../src/Example/
Hello.gyp HelloWorld.cpp HelloWorld.h Util.h a.out
以及
(2)
% cd bld/Example
% gyp ../../src/Example/Hello.gyp --depth=. -f ninja
% ninja -C out/Default
ninja: Entering directory `out/Default'
[1/1] ACTION generated_code: cpp_compile_fb764512ff3485761831ee0d8df0b433
% ls
out
% ls ../../src/Example
Hello.gyp HelloWorld.cpp HelloWorld.h Util.h a.out
这两种方法都不起作用,因为a.out在src / Example中而不是bld / Example。问题似乎是忍者在src / Example中执行cd
并运行g++
而不是在bld / Example(运行ninja
命令)中运行它。那么,为了在bld / Example中使用a.out,我应该采取哪些不同的做法(以便它等同于从bld / Example运行g++ ../../src/Example/HelloWorld.cpp
)?
感谢。
答案 0 :(得分:0)
尝试将-Goutput_dir=bld/Example
传递给gyp。