Я хотел бы вызвать скрипт python из Jamfile для создания необходимого исходного файла.

В Makefile это выглядело бы примерно так:

sourcefile.c:
    python script.py

Каков самый элегантный способ заархивировать что-то подобное в Jamfile?

3
user1785730 30 Окт 2012 в 17:55

1 ответ

Лучший ответ

Эквивалент джема такой:

actions CallScript
{
    python script.py
}

CallScript sourcefile.c ;

В зависимости от контекста вашего приложения вам может потребоваться немного больше. Например. если сценарий создает исходный файл, и вы хотите скомпилировать этот сгенерированный исходный файл, решение, вероятно, будет выглядеть так:

rule GenerateSource
{
    local source = [ FGristFiles $(1) ] ;
    MakeLocate $(source) : $(LOCATE_SOURCE) ;
    Clean clean : $(source) ;
    GenerateSource1 $(source) ;
}

actions GenerateSource1
{
    python script.py $(1)
}

GenerateSource sourcefile.c ;

Main foo : sourcefile.c ;
1
user686249 30 Окт 2012 в 18:33
1
Если подумать, вы, вероятно, захотите, чтобы ваш исходный файл обновлялся при изменении скрипта. Поэтому в правило следует добавить Depends $(source) : script.py ;. Затем вы можете также передать сценарий в качестве второго параметра действиям (GenerateSource1 $(source) : script.py ;) и использовать этот параметр в действиях вместо того, чтобы жестко указывать имя (python $(2) $(1)). О, я предполагал, что сценарий принимает имя вашего исходного файла в качестве параметра. Если это не тот случай, опустите $(1)
 – 
user686249
30 Окт 2012 в 19:00