Tag: 生成文件

如何检查文件是否存在于Makefile中?

在我makefle的干净部分,我试图检查文件是否永久删除之前存在。 我使用这个代码,但我收到错误。 它出什么问题了? if [ -a myApp ] then rm myApp fi 我得到这个错误消息 f [ -a myApp ] /bin/sh: Syntax error: end of file unexpected (expecting "then") make: *** [clean] Error 2

使用CLion的本地makefile而不是CMake

有没有办法configurationCLion使用本地makefile来编译代码,而不是CMake? 我似乎无法find从构build选项做到这一点。

我可以编译所有.cpp文件在src / to .o的obj /中,然后链接到二进制文件./?

我的项目目录如下所示: /project Makefile main /src main.cpp foo.cpp foo.h bar.cpp bar.h /obj main.o foo.o bar.o 我想让我的makefile做的是将/src文件夹中的所有.cpp文件编译为/obj文件夹中的.o文件,然后将/obj所有.o文件链接到顶层的输出二进制文件文件夹/project 。 我几乎没有使用Makefiles的经验,而且我不太确定要做什么。 另外,这是一个“好”的方式来做到这一点,或者是有一个更标准的方法来做我想做的?

如果没有指定目标,“make”应用程序如何知道构build默认目标?

大多数的Linux应用程序编译为: make make install clean 据我所知,make使用构build目标的名字作为参数。 因此, install是复制一些文件的目标,然后clean是一个删除临时文件的目标。 但是如果没有指定参数,那么目标是什么?(例如我的例子中的第一个命令)?

为什么认为目标是最新的?

这是我的Makefile: REBAR=./rebar REBAR_COMPILE=$(REBAR) get-deps compile all: compile compile: $(REBAR_COMPILE) test: $(REBAR_COMPILE) skip_deps=true eunit clean: -rm -rf deps ebin priv doc/* docs: $(REBAR_COMPILE) doc ifeq ($(wildcard dialyzer/sqlite3.plt),) static: $(REBAR_COMPILE) build_plt analyze else static: $(REBAR_COMPILE) analyze endif 我可以多次运行make compile并获取 aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile ./rebar get-deps compile ==> erlang-sqlite (get-deps) ==> erlang-sqlite (compile) 但是,出于某种原因,运行make test总是会给出 aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make test make: […]

将parameter passing给“make run”

我使用Makefiles。 我有一个运行构build目标的运行目标。 简化,看起来如下所示: prog: …. … run: prog ./prog 坐下来 我知道这是巧妙的,但不需要一个站立的鼓掌。 现在,我的问题是 – 有没有办法传递参数? 以便 make run asdf –> ./prog asdf make run the dog kicked the cat –> ./prog the dog kicked the cat 谢谢!

makefile符号$ @和$ <是什么意思?

CC=g++ CFLAGS=-c -Wall LDFLAGS= SOURCES=main.cpp hello.cpp factorial.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=hello all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .cpp.o: $(CC) $(CFLAGS) $< -o $@ $@和$<做了什么?

GNU Makefile规则从单个源文件生成一些目标

我正在尝试做以下事情。 有一个程序叫做foo-bin ,它接受一个input文件并生成两个输出文件。 一个愚蠢的Makefile规则是这样的: file-a.out file-b.out: input.in foo-bin input.in file-a.out file-b.out 但是,这并不能说明两个目标是同时产生的。 在串口运行make时很好,但如果尝试make -j16或类似的东西,可能会造成麻烦。 问题是,是否存在一种为这种情况编写适当的Makefile规则的方法? 很明显,它会生成一个DAG,但是不知怎的,GNU make手册并没有说明如何处理这个案例。 运行相同的代码两次,只生成一个结果是不可能的,因为计算需要时间(思考:小时)。 只输出一个文件也是相当困难的,因为它经常用作GNUPLOT的input,它不知道如何处理一小部分数据文件。

如何使用一个生成文件在子目录中使用源代码生成Makefile

我有一系列的子目录,如: src/widgets/apple.cpp src/widgets/knob.cpp src/tests/blend.cpp src/ui/flash.cpp 在项目的根目录下,我想用如下规则生成一个Makefile文件: %.o: %.cpp $(CC) -c $< build/test.exe: build/widgets/apple.o build/widgets/knob.o build/tests/blend.o src/ui/flash.o $(LD) build/widgets/apple.o …. build/ui/flash.o -o build/test.exe 当我尝试这个时,没有findbuild / widgets / apple.o的规则。 我是否可以改变某些东西,以便在需要构build/部件/ apple.o时使用%.o:%.cpp?

出错:缺less分隔符

我遇到以下错误运行make : Makefile:168: *** missing separator. Stop. 这是什么原因造成的?