Мое решение для этого: (при условии, что у вас есть bash
, синтаксис для $@
отличается, например, для tcsh
)
Есть сценарий sourceThenExec.sh
, как таковой:
#!/bin/bash
source whatever.sh
$@
Затем в вашем make-файле предварите ваши цели с помощью bash sourceThenExec.sh
, например:
ExampleTarget:
bash sourceThenExec.sh gcc ExampleTarget.C
Конечно, вы можете поместить что-то вроде STE=bash sourceThenExec.sh
в начало вашего make-файла.и сокращаем это:
ExampleTarget:
$(STE) gcc ExampleTarget.C
Все это работает, потому что sourceThenExec.sh
открывает подоболочку, но затем команды запускаются в одной и той же подоболочке.
Недостатком этого метода является то, чтофайл получает источник для каждой цели, что может быть нежелательно.