Как я могу изменить расширение от входных файлов в Jam-скрипте. На Linux Box у меня есть следующий рабочий код —
for local var in $(objFiles)
{
local objName = [ SHELL "var1=$(var); echo ${var1%.cpp}.obj" ] ;
obj $(objName) : $(var) : $(properties) ;
}
Первая строка цикла for выбирает имя файла cpp и изменяет его расширение с <File>.cpp
в <File>.obj
, Мне нужно скрыть эти изменения, совместимые с платформой Windows. Я думаю, что какой-то модуль в процессе ускоренной сборки предоставил бы какой-то способ сделать это, но поиск в Google не очень помог.
Какие изменения я должен сделать в приведенном выше коде, чтобы objName
будет содержать расширение файла OBJ, и эти изменения остаются совместимыми для всех платформ (особенно Win / Linux)
Я не знаком с Boost.Jam, но подозреваю, что он работает так же, как и в обычном Jam. Есть несколько операторов выбора / замены, которые вы можете применить к переменным. В этом случае вы хотите использовать S=
для изменения суффикса имени файла:
local objName = $(var:S=.obj) ;
В обычном джеме есть предопределенная OS-зависимая переменная SUFOBJ
который следует использовать вместо жесткого кодирования «.obj». Не уверен, доступен ли он и в Boost.Jam. Если это так, вы можете использовать:
local objName = $(var:S=$(SUFOBJ)) ;