标签: gnu-make

如何查看GNU make运行的命令?

我正在尝试调试复杂的Makefile.你如何让GNU make打印它运行的所有命令?我在man页面中找不到答案(使用-d标志似乎不打印它).

(这不是回答我的问题的必要信息,但是如果你想知道:我在编译基于NVIDIA的CUDA库的项目时遇到了问题.我可以自己编译它,但是使用它们的Makefile导致一个讨厌的编译器错误我想使用他们提供的Makefile来更容易打包,并包含他们已经链接过的其他包.)

nvidia gnu-make

8
推荐指数
1
解决办法
380
查看次数

以下GNU make shell变量扩展有什么问题?

在这一行:

GCCVER:=$(shell a=`mktemp` && echo $'#include <stdio.h>\nmain() {printf("%u.%u\\n", __GNUC__, __GNUC_MINOR__);}' | gcc -o "$a" -xc -; "$a"; rm "$a")
Run Code Online (Sandbox Code Playgroud)

我明白了:

*** unterminated call to function `shell': missing `)'.  Stop.
Run Code Online (Sandbox Code Playgroud)

我愚蠢的迂回变量出了什么问题?

Update0

$ make --version
GNU Make 3.81
$ bash --version
GNU bash, version 4.2.8(1)-release (x86_64-pc-linux-gnu)
$ uname -a
Linux 2.6.38-10-generic #46-Ubuntu SMP x86_64 GNU/Linux
$ gcc --version
gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
Run Code Online (Sandbox Code Playgroud)

shell gcc makefile gnu-make variable-expansion

8
推荐指数
1
解决办法
5088
查看次数

***没有规则来制作目标'class.cpp',需要`build/.... x86/class.o`停止.Ubuntu中的错误

我试图构建和编译我的程序时遇到此错误.现在我无法打开程序中的所有.cpp文件.

make [2]:*没有规则来制作目标Checker.cpp', needed by 构建/调试/ GNU-Linux-x86/Checker.o'.停止.

有人可以帮我这个吗?我检查了所有在线资源,但我似乎无法找到解决方案.我迫切需要这个解决.感谢给予的任何帮助.

c++ compilation gnu-make

8
推荐指数
1
解决办法
2万
查看次数

Makefile使用Shell创建变量

我使用make的shell命令来填充一些变量,并在输出时指示它们被设置为我期望的值.然而,当我把它们传递给我的制作食谱时,它们都显示为空.我怀疑make正在对结果做一些奇怪的解析.例如:

MyTarget: $(MySources)
    LINE='$(shell cat $< | grep GIMME_THE_LINE_I_WANT)'
    CH9=$(shell echo $(LINE) | cut -b9)
    echo $(CH9) # doesn't print anything
Run Code Online (Sandbox Code Playgroud)

我通过设置手动检查了我的生成器命令SHELL=sh -XV,当我运行相同的命令时,我得到正确的值,它看起来像bash是'归零'我的变量.知道什么是错的吗?

bash makefile gnu-make

8
推荐指数
1
解决办法
7937
查看次数

将GNUMake与包含空格的文件名一起使用的最可靠方法是什么?

我想使用GNUMake来运行基于规则的makefile,它在目录结构中(在Windows文件系统上)构建一组C文件.

根目录,一些子目录和一些文件包含空格.

示例文件: "C:\Documents and Settings\<username>\My Documents\Test Dir\Build Me.c"

当文件路径包含空格时,GNUMake不起作用.我读过有关解决此问题的工作(从我的文件名去掉空格,使用8.3格式,替代空间的可能途径?\\等),但他们都不是完美的(或者是他们?)

有没有银弹可以解决这个问题?

顺便说一下,我坚持使用GNUMake,我不能使用不同的制作工具.

windows filenames space gnu-make

7
推荐指数
1
解决办法
4572
查看次数

判断 make 是在 windows 还是 linux 上运行

有没有办法在 makefile 中知道 GNU make 是在 linux 操作系统还是 windows 操作系统上运行?

我已经构建了一个 bash 脚本,它生成一个用于构建我的应用程序的 makefile,它在我的 Debian 机器上运行良好。我想尝试在 MinGW/MSYS 上构建它,但问题是我必须构建和运行一些测试程序来检查源代码中的错误,而要在 Windows 上运行它,我必须添加 .exe 后缀。

makefile gnu-make os-agnostic os-detection

7
推荐指数
2
解决办法
1万
查看次数

文件是为不受支持的文件格式构建的,而不是链接的体系结构(x86_64)

我在OSX Lion上有一个构建文件

VPATH = src include
CFLAGS ="-I include -std=gnu99"

hello: hello.o
    gcc $^ -o $@

hello.o: hello.h hello.c
    gcc $(CFLAGS) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行此make文件时,我收到以下错误

    ld: warning: ignoring file hello.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我已尝试使用该标志-arch x86_64但仍然得到相同的错误.

运行arch命令给出:i386.

uname …

macos gcc makefile gnu-make

7
推荐指数
1
解决办法
2万
查看次数

makefile中%和*之间的区别是什么

GNU make手册在解释这一部分不擅长,我找不到解释或者我不能推断其他地方的信息.

我知道%是一种通配符,但之间有什么区别%*的背景下targets,dependenciescommands?我在哪里可以使用它,到处都有相同的含义?

target: dependencies ...
    commands
Run Code Online (Sandbox Code Playgroud)

makefile pattern-matching gnu-make

7
推荐指数
2
解决办法
2757
查看次数

如何使用GNU Make为每个目标运行预配方和后配方?

在中make,是否可以为每个目标定义前食谱和后食谱?

我想(隐式)在显式配方的第一行上方插入前食谱,然后(隐式)在显式配方的最后一行之后插入后食谱。

使用正则表达式插入行会很容易,但是隐式行会更干净。

c++ makefile gnu-make

7
推荐指数
1
解决办法
1241
查看次数

是否可以在 Makefile 中设置环境变量 - 之后使用

我正在尝试在 Makefile 中设置一个环境变量,以便它可以在 sam shell 中运行的另一个程序中使用make,但是在make运行之后。

更新:根据已接受的带有评论的答案,这是不可能的。

脚步:

  1. 运行make test设置环境:export TEST_ENV_ONE=OneString
  2. 运行另一个程序,可以读取 TEST_ENV_ONE

试过这个:

不工作:

test:
    export TEST_ENV_ONE=OneString
    $(shell export TEST_ENV_TWO=TwoString)
Run Code Online (Sandbox Code Playgroud)

之后这是空的:

echo $TEST_ENV_ONE
echo $TEST_ENV_TWO
Run Code Online (Sandbox Code Playgroud)

bash makefile gnu-make

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