0

我遇到的问题涉及尝试使用单独的目录进行构建输出。特别是,我有以下目录/文件结构:

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)',
               ],
            },
         ],
      },
   ],
}

mv我想要做的是使用忍者生成 bld/Example/a.out (不做类似的事情)。我尝试了以下方法:

(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 中。问题似乎是 ninjacd进入 src/Example 并运行g++而不是在 bld/Example (ninja运行命令的位置)中运行它。那么为了在 bld/Example 中有 a.out (这样它相当于g++ ../../src/Example/HelloWorld.cpp从 bld/Example 运行),我应该做些什么不同的事情?

谢谢。

4

1 回答 1

1

尝试传递-Goutput_dir=bld/Example给 gyp。

于 2015-04-09T04:26:36.340 回答