2010-01-05 123 views
10

我正在發佈我的cpp文件以及makefile。現在,makefile與cpp文件位於同一目錄中。獲取MakeFile目錄

makefile中的變量(如果有)允許我檢索makefile所在的當前目錄?通過這種方式,我可以使用該變量來指定我編譯的cpp路徑。

我的makefile文件如下:

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

編輯:我正在我的makefile在Windows

+1

該文件的「位置」是一個奇怪的概念。記住一個給定的文件可以有很多名字(硬鏈接,甚至在窗口中)。另外,你在混合另一個概念; 「當前」目錄通常意味着一些特殊的東西,並且與任何單個文件無關。 – 2013-02-08 18:24:34

回答

7

我記得我有完全相同的問題。據我所知,這是不可能的。 您可以擁有的最佳選擇是將其作爲變量傳遞。這既是跨平臺的,也是有保證的,因爲你知道調用時的makefile目錄(否則你不能調用它)。

或者,你可以做一個非常髒的詭計,這意味着你試圖將你當前的路徑(你可以用gnu make中的$(CURDIR)獲得)與makefile的調用路徑結合起來(這可能會很棘手,並取決於你的化妝)

0

可以使用$(SRCDIR)

隨後的./configure --srcdir =「/ your/path/to/the/source/directory」

+0

這假設Graviton正在使用Autoconf,這不一定是一個好的假設。 – 2017-09-18 15:07:24

1

對於「cygwin的」和'Linux的使用我已經在makefile直接從規則調用PWD解決了這個:

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

當前工作目錄與makefile所在的目錄不同(在你的頭部做一個「cd/fnord; make -f/foo/bar/Makefile」,你會意識到這個問題) – 2013-02-08 18:25:41