簡體   English   中英

是否可以從目標部分更新 makefile 變量?

[英]Is it possible to update a makefile variable from within a target section?

我有我的簡單 Makefile,是這樣的

CXX = g++
CXXFLAGS = -std=c++17 ...
...
all : $(TARGETS)

% : src/%.cpp $(SRCFILES)
    $(CXX) $(CXXFLAGS) $(MACROS) $(INCLUDES) $^ $(LDLIBS) -o $@

我想添加一個profile目標,在調用時將-pg選項添加到CXXFLAGS變量,然后調用所有目標。

我試過了

profile:
    CXXFLAGS += -pg
    all

但這不起作用並給出錯誤:

$ 制作個人資料
CXXFLAGS += -pg
制作:CXXFLAGS:找不到命令

正如您發現的那樣,語法不起作用。 配方不是 makefile 命令,它們是 shell 腳本並在 shell 中運行。

您應該為此使用特定於目標的變量

profile: CXXFLAGS += -pg
profile: all

我應該指出,雖然這看起來很有用,但它並不總是那么方便。 如果您想使用不同的標志構建相同的目標(例如, .o文件),您必須小心在構建之間始終手動運行clean ,否則您將獲得以不同方式構建的對象的混雜。

通常,經過一段時間后,人們會決定他們真正想做的是將不同類型的目標構建到不同的目錄中,這樣他們就不會混淆。 一旦你這樣做了,你需要不同的規則,然后你不妨把額外的標志放在那里。 但是,在某些情況下,特定於目標的變量仍然很方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM