是否有可能使Gyp生成预(或后)构建步骤?

时间:2017-02-20 15:25:22

标签: c node-gyp post-build-event gyp pre-build-event

我使用gyp生成Visual Studio项目,制作文件和Xcode项目。

我希望有一个预构建步骤,它调用一个命令行工具,生成一些我后来编译的代码,这可能吗?

顺便提一下,在cmake我使用项目的后期构建步骤,我依赖它作为一种解决方法,因为那里没有预构建,所以后期构建步骤也将是细。

我可以看到我可以使用<!()语法在生成时调用任意命令,但我真的更喜欢生成项目一次,然后在编译时生成代码生成步骤。

我使用actions ...

到达某个地方

我有这个小应用程序:

的main.c

#include <stdio.h>

int main() {
    #include "some_output"
    return 0;
}

此输入文件

some_input

printf("Hello World!\n");

所以我可以在我的.gyp文件中伪装一些,尽管是特定于Windows的代码生成(例如将文件打印到标准输出并重定向回文件,是的,愚蠢但它有希望说明这一点):

gypping.gyp

{
    'targets': [
    {
        'target_name': 'gypping',
        'type': 'executable',
        'sources': [
            'main.c',
            '<(INTERMEDIATE_DIR)/some_output',
        ],
        'actions': [{
                'action_name': 'create_something_generated',
                'inputs': [ 
                    'some_input'
                ],
                'outputs': [
                    '<(INTERMEDIATE_DIR)/some_output',
                ],
                'action': ['type', '<@(_inputs)', '>', '<@(_outputs)'],
            },
        ],
      },
    ],
  }

这似乎与我在Visual Studio中构建(运行gyp --depth=.)时的工作差不多,我收到以下错误:

1>------ Build started: Project: gypping, Configuration: Default Win32 ------
1>  create_something_generated
1>  '"C:\dev\code\Sandpit\gypping\.\setup_env.bat"' is not recognized as an internal or external command,
1>  operable program or batch file.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我无法在路径中找到setup_env.bat

我创建了一个空的setup_env.bat文件,我通过删除>简化了操作(我猜这逃脱出错了)。现在我明白了:

'bash' is not recognized as an internal or external command,

我在Windows上没有bash。

我认为Gyp已经为我完成了,我想我会坚持使用cmake。

1 个答案:

答案 0 :(得分:1)

actions正是您想要的。它们在预编译时运行,Git文档显示它们用于生成在编译步骤中使用的文件。

我安装了Git for Windows并使用它而不是cygwin来运行通过Visual Studio生成的操作。这是我的setenv.bat

REM Set up to use Git Bash for running "cygwin" actions.

REM CD to where this file lives to avoid path relativization problems.
cd %~dp0

set PATH=%PATH%;C:\Program Files\Git\bin

我也见过安装了Git for Windows %USERPROFILE%\AppData\Local\Programs\Git。我不知道是什么导致了不同的位置。

我正在寻找如何生成帖子构建步骤的答案