【问题标题】:Can't assign variable inside recipe无法在配方中分配变量
【发布时间】:2011-09-25 01:01:41
【问题描述】:

我该如何进行这项工作?它出错了“make:somevariable:Command not found”

sometarget:
    somevariable = somevalue

完整示例:

CXXFLAGS = -I/usr/include/test -shared -fPIC

OBJ = main.o Server.o

blabla : $(OBJ) 
ifeq ($(argsexec),true) 
    # Creates an executable
    CXXFLAGS = -I/usr/include/test
    $(CXX) -o blabla $(OBJ) $(CXXFLAGS) 
else 
    # Creates a library
    DESTDIR = /home/pc
    $(CXX) -o blabla $(OBJ) $(CXXFLAGS) 
    ./bn.sh
endif

【问题讨论】:

标签: makefile gnu-make


【解决方案1】:

如果你像以前那样编写它,分配将作为 shell 命令执行,这会给出你得到的错误。

我会尝试像这样组织它:

CXXFLAGS = -I/usr/include/test ifneq ($(argsexec),true) CXXFLAGS += -shared -fPIC DESTDIR = /home/pc 万一 OBJ = main.o 服务器.o 废话:$(OBJ) $(CXX) -o blabla $(OBJ) $(CXXFLAGS) ifneq ($(argsexec),true) ./bn.sh 万一

这应该可以满足您的需求,尽管我对两次使用 ifneq 构造不太满意。我必须更加努力地想出一些可以避免这种情况的方法。

【讨论】:

    【解决方案2】:

    我找到了使用the eval function的解决方案:

    $(eval variablename=whatever)
    

    这行得通:)

    (虽然我现在可能会尝试找到一个更简单的构建系统;))

    感谢大家的阅读,当然也感谢@eriktous 的写作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多