LINUX.ORG.RU

make. Автоматическое определение путей к библиотекам..


0

1

У меня есть makefile c определенными в нем переменными FFTW_DIR = /usr/local; MKL_DIR = /opt/intel/mkl/10.2.5.035 Значение этих переменных разные для разных компьютеров, можно ли средствами makefile сделать так, чтобы он самостоятельно искал путь к библиотеке и подставлял их?(ссылка на описание инструментов приветствуется) 2) Если make это делать не умеет, то подскажите на какие тулзы опираться при написании shell scripta, который будет изменять makefile автоматически, дело в том, что я думал использовать locate, но он не везде есть и не везде есть возможность его поставить.



Последнее исправление: gameover__ (всего исправлений: 1)

cmake

из коробки mkl находить он умеет, для fftw пишутся тривиальные скрипты

Reset ★★★★★
()

Makefile:

FFTW_DIR ?= /usr
MKL_DIR ?= /usr

...

shell:

make FFTW_DIR=/usr/local MKL_DIR=/opt/intel/mkl/10.2.5.035

arsi ★★★★★
()

autotools, cmake, etc. Использовать самописные скрипты для этих целей чем-то сродни изобретению пятиколёсного велосипеда с треугольными колёсами. 8))

kemm
()
Ответ на: комментарий от kemm

Спасибо, сейчас смотрю в сторону scons в качестве альтернативы make.

gameover__
() автор топика

autotools, cmake, scons... Таких систем много, все пытаются решить одну и туже задачу, с достаточно одинаковым успехом.

catap ★★★★★
()

Начать с того, что подумать, откуда ты сам знаешь про эти директории.
Либо есть некая программа, которую ты вызовешь с флагом --show-dir и
которая тебе покажет нужные пути, либо ты перебираешь пути по
списку или какому-то другому алгоритму.

Если первое, то FFTW_DIR=$(shell prog-config --show-dir) например
Если второе - то пишешь что-то вроде:

FFTW_DIR=$(call one-of PATH1 PATH2...)

ф-я one-of получается как-то так:

dir-present=$(if $(strip $(shell test -d «$1»)),$1,)

generate-tool-list=$(foreach item,$1,$(call dir-present,$(item)))

one-of=$(word 1,$(call generate-tool-list,$1))

тогда у тебя в переменной FFTW_DIR окажется либо первая по списку существующая директория, либо пусто - но это уже проверишь перед использованием и выдаешь какой-нибудь $(error ОБЛОМ НАХ)

deadman ★★
()
Ответ на: комментарий от deadman

Спасибо, все-таки пока думаю отказаться от своих велосипедов и последовать совету других участников. Сейчас начал изучать scons, его функционала мне должно с лихвой хватить(выбор основан на том, что питон для написания таких простых скриптов я уже знаю). Если решение не устроит попробую другие.

gameover__
() автор топика

SCons не советую - сам с него в ужасе на cmake ушел. Общий смысл в том что scons за тебя ничего не делает, и поддержка кросс-платформенного скрипта для сборки проекта превращается в кошмар с кучей условий для разных систем. Кроме того, в scons сотни неочевидных костылей (CXXFLAGS=CFLAGS, переменные окружения не пробрасывается утилитам, ублюдейшая схема наследования scons'овских Environement между SConscript'ами и т.д.). В то время как cmake делает всё сам, предсказуемо и логично.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Спасибо, я вроде пока прорвался через все его странности и написал свой мэйкфайл, хотя и убил прилично времени. Надо обязательно будет глянуть cmake.

gameover__
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.