2015-06-14 57 views
2

我想直接在我的Makefile出口的東西,所以我做這樣一個規則:如何直接在Makefile中導出?

export: export LD_LIBRARY_PATH=./smthing/here 

然後我把這個規則我$(NAME)

$(NAME): $(OBJS) 
     $(CXX) -o $(NAME) $(OBJS) $(CXXFLAGS) $(LDFLAGS) 
     $(export) 

$(OBJS)是一個簡單的規則來轉換我所有的.cpp轉換成.o

$(CXXFLAGS)是我的編譯標誌:-Wall -Werror -Wextra

等了$(LDFLAGS)你得到了點..

這裏的問題是,我的出口規則做,但它並沒有出口我所期待的。爲什麼?你可以幫我嗎 ?

我得到這個,如果我不要用手在我的終端執行導出:如果要處理來自Makefile文件導出

./cutom_prog: error while loading shared libraries: custom_lib.so: cannot open shared object file: No such file or directory 
+0

_「但它沒有輸出我所期望的」 _你能否在你的問題中提供一些關於這個的更多說明? –

+0

好吧,我得到了一個我必須出口的共享文憑。我的二進制文件不會沒有這個運行。 – nookonee

+0

請在問題中逐字填寫任何錯誤消息。 '$(NAME)'規則不執行你的二進制BTW。您可能需要在某個安裝腳本中添加到該路徑。 –

回答

2

,然後嘗試:

$(NAME): $(OBJS) 
     @export MY_ENV_VAR=my_value; \ 
     $(CXX) -o $(NAME) $(OBJS) $(CXXFLAGS) $(LDFLAGS) 

系統只導出如果使用命令本身在相同的子shell中調用,則工作。

但是,此解決方案不適用於LD_LIBRARY_PATH,因爲您的意圖是更新父過程make,這是不可能的。

解決方法是創建一個包裝腳本,將:通過調用make

  • 設置LD_LIBRARY_PATH
  • 啓動應用程序

    • 構建應用程序
  • +1

    那麼..我直到有我的錯誤消息,出口沒有完成.. – nookonee

    +0

    你遇到同樣的問題,如果你在調用'make'之前導出?我的意思是:'export LD_LIBRARY_PATH =/your/custom/path;使' –

    +0

    是的,我得到了同樣的錯誤信息,我把我的問題。 – nookonee

    相關問題