在GNU makefile中,我想知道是否有可能通过文件列表输入来创建带有新扩展名的文件列表输出.
在输入中,我得到这个列表:
FILES_IN=file1.doc file2.xls
Run Code Online (Sandbox Code Playgroud)
我想在FILES_IN变量的makefile中构建这个变量:
FILES_OUT=file1.docx file2.xlsx
Run Code Online (Sandbox Code Playgroud)
可能吗 ?怎么样 ?
这很困难因为我必须解析文件列表,并检测每个扩展名(.doc,.xls)以将其替换为正确的扩展名.
可能重复:
发生错误:缺少分隔符
在makefile中有这个代码:
PROG = semsearch
all: $(PROG)
%: %.c
gcc -o $@ $< -lpthread
clean:
rm $(PROG)
Run Code Online (Sandbox Code Playgroud)
和错误
missing separator. stop.
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我有一个makefile,其中包含其他几个makefile,而这些makefile又添加了一个这样的变量:
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
Run Code Online (Sandbox Code Playgroud)
现在我希望SomethingElse从VAR变量中删除.我该怎么做(...)才能做到这一点?
我正在使用GNU Make,GNU Make特定解决方案也没问题.
我正在按照我克隆到我的机器的某个人的指示.我想要的很简单:能够在make设置代码环境时使用该命令.但是我正在使用Windows,我在线搜索只找到要下载的make.exe文件,要下载的make-4.1.tar.gz文件(我不知道下一步该做什么),以及有关下载MinGW(GNU;但是安装后我没有发现任何提及"制造").
我不想要GNU编译器或相关的东西; 我只想在Windows中使用"make".请告诉我应该怎样做才能实现这一目标.
提前致谢!
经过多年没有使用make,我发现自己需要它,现在是gnu版本.我很确定我应该能够做我想做的事情,但是没有弄清楚如何,或者找到谷歌的答案等.
我正在尝试创建一个测试目标,它将多次执行我的程序,将结果保存在日志文件中.一些测试应该导致我的程序中止.不幸的是,我的makefile在第一次测试时中止,导致错误.我有类似的东西:
# Makefile
#
test:
myProg -h > test.log # Display help
myProg good_input >> test.log # should run fine
myProg bad_input1 >> test.log # Error 1
myProg bad_input2 >> test.log # Error 2
Run Code Online (Sandbox Code Playgroud)
使用上面的命令,在bad_input1运行后退出,永远不会运行bad_input2.
我正在使用GNU-make Makefile来构建一个包含多个目标(all和clean,以及一些项目特定目标)的C项目.在调试过程中,我想在没有永久编辑Makefile的情况下将一些标志附加到单个构建中(例如,添加调试符号或设置预处理器标志).
在过去,我做了如下(使用调试符号示例):
make target CFLAGS+=-g
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并没有附加到CFLAGS变量,而是清除它并阻止它编译.是否有这样做没有确定某种形式的虚拟变量追加到年底的清洁方式CFLAGS和LDFLAGS?
我正在开发一个用Linux上的CMake构建的大型C++项目.CMake运行正常,在模块和应用程序树中生成大量的Makefile.运行GNU make会导致链接器错误.如何make在运行之前打印出确切的命令?
-d选项不会打印命令,但是大量信息没有帮助.
-n选项打印所有命令,但不运行它们,所以我不知道确切的问题是什么.从make -n检查stdout,我没有看到任何相关的命令.我怀疑某些命令会根据早期命令的结果而改变,而Makefiles的层次结构使得很难分辨出真正发生的事情.
我在make的手册页中看不到其他任何看起来有用的选项.
我想在我的makefile中检测一个工具是错误版本的条件,并强制make失败,并显示一条错误消息,指出该项目不是正确的版本.
谁能举个例子呢?
我尝试了以下但是它不是正确的语法:
ifeq "$(shell svnversion --version | sed s/[^0-9\.]*://)" "1.4"
$error("Bad svnversion v1.4, please install v1.6")
endif
Run Code Online (Sandbox Code Playgroud)
谢谢.
我只知道非常基本的makefile语法,并且正在阅读另一个项目makefile并且遇到:=了宏声明.他们为什么要用它?
换句话说,两者之间是否有任何区别
MYMACRO = hi i'm a macro
Run Code Online (Sandbox Code Playgroud)
和
MYMACRO := hi i'm a macro
Run Code Online (Sandbox Code Playgroud)
?
gnu-make ×10
makefile ×9
c ×1
cmake ×1
colon-equals ×1
debugging ×1
linux ×1
variables ×1
windows-10 ×1
windows-8 ×1