0
我試圖使用單獨的目錄來編譯輸出的問題。特別是,我有以下目錄/文件結構:與Gyp和忍者一起使用單獨的構建目錄
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 /例/ 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 /實施例,而不是bld/Example。問題似乎是,忍者在src/Example中執行cd
,並運行g++
而不是在bld/Example(其中運行ninja
命令)中運行它。那麼,爲了在bld/Example中使用a.out,我應該做些什麼不同(因此它相當於從bld/Example運行g++ ../../src/Example/HelloWorld.cpp
)?
謝謝。
它提供了一個問題的答案。你爲什麼認爲這不是一個答案? – thakis 2015-04-09 22:07:25
因爲答案應該解釋爲什麼它解決了這個問題。評論說*嘗試它可能工作*但如果你不確定,你不能解釋的方式,應該只是一個評論。 – 2015-04-09 22:23:48
我相當肯定它會工作(我在gyp和忍者上工作)。我的答案中沒有看到「可能」。 – thakis 2015-04-09 22:36:44