2012-09-10 35 views

回答

1

你需要寫:

build: 
    test -d ${srcdir}/build || mkdir ${srcdir}/build 

,但你真的不想這樣做。源目錄應該被認爲是隻讀的。如果你只是想創建一個build目錄命名爲build目錄,只是做

build:  
    test -d build || mkdir build 
+0

事情是,我已經嘗試過,所以我不明白爲什麼我無法做到這一點。如我錯了請糾正我。我運行: 1)./autogen.sh 2)運行./configure 3)使 但我剛剛得到這個:「對象目錄‘構建/’無法找到」 – makeMonday

+0

什麼是你的autogen.sh ?試圖引用'build'目錄的Makefile.am中有什麼?通常,用戶會用'mkdir build;光盤建立;/path/to/configure && make'。 –

+0

在Autogen中沒有什麼特別的。但在Makefile.am中,我試圖編譯我所有的files.c,並將它們放在這個新的構建目錄中,並且像二進制文件的共享庫一樣。 事情是我手動創建「build」dir,這很容易,但我認爲我可以在AM上做到。 – makeMonday

3

仔細想想你的問題:你真的想在同一目錄下創建build作爲Makefile.am,或者在當前工作目錄當configure被調用?這些並不總是相同的事情:GNU編譯系統的目的是支持外的樹構建(有可能只讀$srcdir),所以最終用戶應該期待以下工作:

$ tar xf autofoo-1.2.tar.gz 
$ mkdir autofoo-build 
$ cd autofoo-build 
$ ../autofoo-1.2/configure 
$ make 
$ sudo make install 

現在,我發現創建目錄的最簡單方法是根本不使用Makefile.am,而是使config.status這樣做(這是在configure末尾執行所有模板替換的shell腳本,轉到Makefile.in分成Makefile,config.h.in分成config.h等等)。在configure.ac,把以下內容:

AC_CONFIG_COMMANDS([mkdir], [$MKDIR_P build]) 
+0

優秀的答案,但你可以使用一個比'[mkdir]'更好的*標記*,這是令人困惑的,看起來像一個命令。對於讀者,文檔在那裏:https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/Configuration-Commands.html – fjardon

+0

如果你想要在安裝時創建一個目錄,你該怎麼做?例如,您想要在/ usr/local/lib/mypackagelibdir中創建一個目錄並將其複製到此處。這個目錄不同於普通的對象庫,比如你想拷貝到/ usr/local/lib/site_perl的一些perl模塊boo.pm –

相關問題