- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个将用于构建发布或调试目标库的 makefile。我想将对象和自动生成的依赖文件放入调试或发布目录结构中,具体取决于请求的 makefile 目标。我不想指定可测试的 make 命令行参数(即 DBG=1),但更愿意分别运行 make -f Makefile 或 make -f Makefiel dbg 以实现发布和调试目标。把那部分弄下来了。我知道我无法分配包含对象目录名称(发布或调试)的特定于目标的变量,该变量可以用作规则中目标规范的一部分,就像我在下面显示的示例中所做的那样。在此示例中,OBJDIR 是我想根据构建目标设置的特定于目标的变量。因此,在此示例中,$(OBJDIR) 在目标规则 $(OBJDIR)/%.o 中为空。关于如何很好地执行建议步骤的任何建议? (显示的示例只是一个复制/粘贴未经验证的示例......语法未经验证......事实上,我无法让选项卡正确显示......我希望得到一些实现想法)。 (此外,$(OBJDIR) 未设置在干净的目标中,如图所示...因为它不在 dbg/all 目标依赖层次结构中...想法?)提前致谢。
生成文件:
OBJS := a.o b.o c.o
SRCS := $(OBJS:.o=.c)
-- Set up the release and the debug directory paths and object filenames
RELEASE_DIR := ./release
RELEASE_OBJ := $(OBJS:%=$(RELEASE_DIR)/%)
DEBUG_DIR := ./debug
DEBUG_OBJ := $(OBJS:%=$(DEBUG_DIR)/%)
.PHONY : all dbg
all: CFLAGS = -O3
all: OBJDIR := RELEASE_DIR
all: df := $(RELEASE_DIR)/$(*F)
all: init_release lib1.so
dbg: CFLAGS = -g -O0
dbg: OBJDIR := DEBUG_DIR
dbg: df := $(DEBUG_DIR)/$(*F)
dbg: init_debug lib1.so
Lib1.so: $(OBJ)
init_release:
-@mkdir -p $(RELEASE_DIR)
init_debug:
-@mkdir -p $(DEBUG_DIR)
lib1.so: $(OBJ)
@echo '--------------------------------------------------------------'
@echo linking $@
@gcc -shared -o lib1.so $(OBJ)
-Compile including advance dependancy generation alg, per Tom Tromey:
# http://make.paulandlesley.org/autodep.html
$(OBJDIR)/%.o: %.c
echo $@
echo $(OBJDIR)
echo compiling $@
$(COMPILE.c) -MD -o $@ $<
cp $(df).d $(df).P; \
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $(df).d >> $(df).P; \
rm -f $(df)/$*.d
# If the goal is "clean", don't include these to avoid trying to build them
ifneq($(MAKECMDGOALS),clean)
-include $(SRCS:%.c=$(OBJDIR)/%.P)
endif
clean:
-@rm -f $(OBJDIR)/*.[Pdo] lib1.so
最佳答案
目标特定变量可能很棘手。改用间接。 Make 有很多语法可以减少样板文本。 .SECONDEXPANSION
通常很好。草图:
.SECONDEXPANSION:
${DEBUG_OBJ} ${RELEASE_OBJ}: $$(patsubst %.o,%.c,$${@F})
gcc ${copts-${@D}} -c $< -o $@
这里我们告诉 make ./release/a.o
依赖于 a.c
。当 make 决定构建 ./release/a.o
时,它会扩展 shell 行。当它这样做时,${@D}
自然是 release
,因此 make 继续并扩展 ${copts-release}
,您将定义有用。
类似地,当生成 ./debug/a.o
时,make 会扩展 ${copts-debug}
。
大量使用 $(warning [blah])
、$(error [blah blah])
和强制性的 --warn-undefined-variables
将帮助您做到这一点。
关于makefile - 制作 : Setting Target Specific Variables With Different Goals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354969/
我设置的目标在我使用“验证此目标”按钮验证目标时生成非零值。 “目标流”运行良好。 但是,“目标”部分下除“目标流”之外的所有其他报告(例如“概览”、“目标 URL”等)均不起作用,这意味着它们显示
注意:此线程是关于编写自定义 Mojo,而不是使用插件。 我维护了一个 testing plugin对于 Maven。不幸的是,近一年来,我一直让这个特殊的未知事物徘徊不去,我真的很想知道如何处理它,
基本上我只需要 jacoco 检测测试部分,但是检测整个 pom.xml,并且报告随附了所有内容(来自“oracle.jdbc.driver”、“com.mysql.jdbc”...等的数据) 我已经
我有2个 Artifact ,我希望将它们从本地存储库复制到文件系统中的目录中。 我认为dependency:copy可以完成这项工作。但是,它需要一个参数artifactItems。 http://
我有一个电子表格,其中包含大量输入,但只有一个输出(价格)。 我想让 Excel 自动更新其中一个输入(称为输入 1),以便在调整其他输入的同时保持价格不变。 我知道“目标搜索”可以做到这一点,但我不
我的 SCM 连接信息: scm:svn:https://repo/project/trunk scm:svn:https://repo/project/trunk 我的发布插件配
以这个程序为例。它使用延迟的目标 room(green). room(blue). room(red). room(white). location(jimmy,red). location(rick
我创建了一个函数,可以为每个用户保存多个目标并将它们显示在 html 文件中。问题是一旦我注销,我就无法使用同一用户重新登录,因为我收到错误 User object has no attribute
我有一个相当复杂的方程式,其中有一个我想改变的变量。 T*他的目标是让等式等于 0。* 例如: 0 = variable * (complicated equation of constants an
很难为我的问题找到合适的搜索查询,所以我希望它不会重复。 我正在开发没有多少目标的 Maven 插件。我想将其中两个组合在链中(生命周期?)。在执行 clean-checkout 目标之前,我想先执行
来自甲骨文 documentaiton 最长停顿时间目标 The pause time is the duration during which the garbage collector stops
我们的 POM 文件中有以下配置: org.apache.maven.plugins maven-surefire-plugin true
我是 maven 新手 当我构建时,我收到了这条消息 [INFO] ------------------------------------------------------------------
我有两个略有不同的谓词实现,unique_element/2 ,在序言中。当给定一个元素时,谓词成功 X和一个列表 L , 元素 X在列表中只出现一次。下面是实现和结果: 实现1: %%% uniqu
dependencies:unpack-dependencies 可以解压哪些存档格式?例如,据我所知,它无法解压 RPM 包。是否有它支持的格式列表?有什么技巧可以让 maven 解压 RPM 包吗
在我的公司,我们决定使用谷歌分析来获取一些关于访问者、进入 channel 等的有趣指标...... 我创建了一个目标,当访问者提交联系表单时“触发”,一切都运行良好,我什至创建了一个片段来预览使用表
在开发 Maven 插件时,构建打印错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.
我根据site中的代码创建了一个项目 roo> project setup --topLevelPackage com.foo roo> jpa setup --provider HIBERNATE
我正在尝试在groovy中实现Excel目标搜索功能 我已经能够给出正确的结果,但我确信我的代码可以在性能和准确性方面得到改进。主要是我试图找到正确的调整来解决目标寻求的方式。硬编码的增加/法令似乎不
是否可以将 appassembler: assemble 目标添加到“package”目标中? 我真的只想在执行“mvn package”时运行 assemble 最佳答案 你不能只在应用程序组装器插
我是一名优秀的程序员,十分优秀!