Звоните cmake от делают для создания Make-файлов?

Это вызвано ленивностью - map возвращает ленивую последовательность, которая определена внутри привязки, но оценивается снаружи. Вам необходимо принудительно выполнить оценку изнутри:

(binding [*out-dir* "/home/dave"] 
  (doall (map #(str *out-dir* %) [1 2 3])))
16
задан strager 2 January 2009 в 04:21
поделиться

1 ответ

Если cmake генерирует make-файлы, можно просто включать сгенерированный make-файл в основной make-файл, например,

# makefile
all:                # Default
include $GENERATED
$GENERATED:$CMAKEFILE
   #  Generate the makefile here`

, включенные файлы сгенерированы, затем делают, перезапущен с новыми включенными файлами. Включенные файлы должны детализировать цели, и т.д.

необходимо смочь изменить местоположение используемых файлов с помощью vpath директивы, видеть, например, , Гну еще делает руководство ,

vpath %.o project/.build

, утомительный путь состоит в том, чтобы переписать правила, делающие примечание к необходимому каталогу.

Ed: Возможно, мы не должны использовать плоский make-файл.

Попытка что-то как:

# makefile
all: gui test
clean:
    $(MAKE) -f $(GUI-MAKE) clean
    $(MAKE) -f $(TEST-MAKE) clean

gui:$(GUI-MAKE)
    $(MAKE) -f $(GUI-MAKE) all
$(GUI-MAKE):$(GUI-CMAKE)
    # Generate

# Same for test

Это должно работать, если $ (ДЕЛАЮТ)-f $ (GUI - ДЕЛАЮТ), все работы команды над командной строкой, и мы скрыли cmake в генерирующейся цели. Необходимо было бы скопировать любые другие цели в основной make-файл также и заботиться, работая, делают параллельно.

объектные файлы Распространения через должны включить что-то как [1 112]

%.o:$(GUI-MAKE)
    $(MAKE) -f $(GUI-MAKE) $@

, хотя Вы, вероятно, получите ошибки, пытающиеся сделать тестовые объекты

9
ответ дан 30 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: