标签: gnu-make

如何在GNU make中使用多个扩展名更改列表中每个文件的扩展名?

在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 gnu-make

78
推荐指数
1
解决办法
5万
查看次数

Makefile - 缺少分隔符

可能重复:
发生错误:缺少分隔符

在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 gnu-make

73
推荐指数
1
解决办法
13万
查看次数

调试GNU make

是否有命令行方式make来找出目标的哪些先决条件未更新?

debugging makefile gnu-make

71
推荐指数
5
解决办法
8万
查看次数

从Makefile变量中删除项目?

我有一个makefile,其中包含其他几个makefile,而这些makefile又添加了一个这样的变量:

VAR := Something SomethingElse
VAR += SomeOtherThing

(...)
Run Code Online (Sandbox Code Playgroud)

现在我希望SomethingElseVAR变量中删除.我该怎么做(...)才能做到这一点?

我正在使用GNU Make,GNU Make特定解决方案也没问题.

variables makefile gnu-make

71
推荐指数
2
解决办法
4万
查看次数

如何在Windows中安装和使用"make"?

我正在按照我克隆到我的机器的某个人的指示.我想要的很简单:能够在make设置代码环境时使用该命令.但是我正在使用Windows,我在线搜索只找到要下载的make.exe文件,要下载的make-4.1.tar.gz文件(我不知道下一步该做什么),以及有关下载MinGW(GNU;但是安装后我没有发现任何提及"制造").

我不想要GNU编译器或相关的东西; 我只想在Windows中使用"make".请告诉我应该怎样做才能实现这一目标.

提前致谢!

makefile gnu-make windows-8 windows-10

67
推荐指数
11
解决办法
14万
查看次数

如何让GNU明确测试失败?

经过多年没有使用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.

makefile gnu-make

62
推荐指数
3
解决办法
2万
查看次数

通过命令行附加到GNU make变量

我正在使用GNU-make Makefile来构建一个包含多个目标(allclean,以及一些项目特定目标)的C项目.在调试过程中,我想在没有永久编辑Makefile的情况下将一些标志附加到单个构建中(例如,添加调试符号或设置预处理器标志).

在过去,我做了如下(使用调试符号示例):

make target CFLAGS+=-g
Run Code Online (Sandbox Code Playgroud)

不幸的是,这并没有附加到CFLAGS变量,而是清除它并阻止它编译.是否有这样做没有确定某种形式的虚拟变量追加到年底的清洁方式CFLAGSLDFLAGS

c makefile gnu-make

60
推荐指数
4
解决办法
4万
查看次数

执行前制作CMake打印命令

我正在开发一个用Linux上的CMake构建的大型C++项目.CMake运行正常,在模块和应用程序树中生成大量的Makefile.运行GNU make会导致链接器错误.如何make在运行之前打印出确切的命令?

-d选项不会打印命令,但是大量信息没有帮助.

-n选项打印所有命令,但不运行它们,所以我不知道确切的问题是什么.从make -n检查stdout,我没有看到任何相关的命令.我怀疑某些命令会根据早期命令的结果而改变,而Makefiles的层次结构使得很难分辨出真正发生的事情.

我在make的手册页中看不到其他任何看起来有用的选项.

linux cmake gnu-make

60
推荐指数
4
解决办法
3万
查看次数

如何强制gnumake文件中的错误

我想在我的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 gnu-make

57
推荐指数
3
解决办法
6万
查看次数

:= vs = in make macros

可能重复:
GNU Makefile变量赋值=,?=,:=和+ =之间有什么区别?

我只知道非常基本的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)

makefile gnu-make colon-equals

56
推荐指数
1
解决办法
5万
查看次数