Получить каталог MakeFile

Я распространяю свои файлы cpp вместе с make файлом. Теперь make файл находится в том же каталоге, что и файл cpp.

Какова переменная (если она есть) в make файле, которая позволяет мне получить текущий каталог, в котором находится файл makefile? Таким образом, я могу использовать эту переменную для указания моего пути cpp для компиляции.

Мой make файл выглядит следующим образом:

all:
    g++ ($makeFileDir)/main.cpp ($makeFileDir)/hello.cpp ($makeFileDir)/factorial.cpp -o ($makeFileDir)/hello.exe

Изменить: я запускаю свои make файлы в Windows

Ответ 1

Помню, у меня была такая же проблема. Насколько я помню, это невозможно. Лучшая ставка, которую вы можете получить, это передать ее как переменную. Это как кроссплатформенная платформа, так и гарантированная работа, поскольку вы знаете, как сделать make файл во время вызова (иначе вы не можете его вызывать).

В качестве альтернативы вы можете сделать очень грязный трюк, что означает, что вы пытаетесь объединить свой текущий путь (вы можете получить с помощью $(CURDIR) в gnu make) с помощью пути вызова make файла (что может быть сложно, и зависит от вашего make)

Ответ 2

Для использования "cygwin" и "linux" я разрешаю это, вызывая pwd непосредственно из правила в make файле:

do.%: %.cpp
  echo "Running command in " `pwd`
  somecommand $^

Ответ 3

вы можете использовать $(srcdir)

затем./configure --srcdir = "/your/path/to/the/source/directory"