标签: makefile

如何从另一个Makefile调用Makefile?

我收到一些意外的结果从另一个调用一个makefile.我有两个makefile,一个叫/path/to/project/makefile,一个叫/path/to/project/gtest-1.4.0/make/Makefile.我试图让前者称之为后者.在/ path/to/project/makefile中,我有

dev: $(OBJ_FILES)
  $(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT)
  $(MAKE) -f ./gtest-1.4.0/make/Makefile

clean:
  rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o
  rm -f ../svn-commit.tmp~
  rm -f $(BIN_DIR)/$(PROJECT)
  make -f gtest-1.4.0/make/Makefile clean
Run Code Online (Sandbox Code Playgroud)

/path/to/project/gtest-1.4.0/make/Makefile我有

all: $(TESTS)

clean:
  rm -f $(TESTS) gtest.a gtest_main.a *.o
Run Code Online (Sandbox Code Playgroud)

发布以下内容:

cd /path/to/project
make
Run Code Online (Sandbox Code Playgroud)

输出:

make -f ./gtest-1.4.0/make/Makefile
make[1]: Entering directory `/path/to/project'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/path/to/project'
Run Code Online (Sandbox Code Playgroud)

但是,当我发出这些命令时:

cd /path/to/project
make clean
Run Code Online (Sandbox Code Playgroud)

我知道了:

make -f gtest-1.4.0/make/Makefile clean …
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

111
推荐指数
3
解决办法
13万
查看次数

Cmake vs制作示例代码?

我想知道是否有任何示例代码MakefileS( make)和CMakeLists.txt(cmake),这两个做同样的事情(唯一的区别在于,一个是写在make和其他的cmake).

我试着寻找'cmake vs make',但我从来没有找到任何代码比较.理解这些差异真的很有帮助,即使只是为了一个简单的案例.

makefile cmake

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

是否可以在Makefile中创建多行字符串变量

我想创建一个多行字符串的makefile变量(例如电子邮件发布公告的正文).就像是

ANNOUNCE_BODY="
Version $(VERSION) of $(PACKAGE_NAME) has been released

It can be downloaded from $(DOWNLOAD_URL)

etc, etc"
Run Code Online (Sandbox Code Playgroud)

但我似乎找不到办法做到这一点.可能吗?

variables makefile

110
推荐指数
5
解决办法
6万
查看次数

DESTDIR和PRE的PRE

我正在尝试将软件安装到特定目录.我找到了几种方法,但不确定它们之间有什么区别.

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***
  4. ./configure --prefix=***

我对这四个的功能感到困惑.他们实现了同样的目标吗?

c linux bash makefile configure

109
推荐指数
1
解决办法
6万
查看次数

如何在Makefile中设置子进程的环境变量

我想更改这个Makefile:

SHELL := /bin/bash
PATH  := node_modules/.bin:$(PATH)

boot:
    @supervisor         \
      --harmony         \
      --watch etc,lib       \
      --extensions js,json      \
      --no-restart-on error     \
        lib

test:
    NODE_ENV=test mocha         \
      --harmony             \
      --reporter spec       \
        test

clean:
    @rm -rf node_modules

.PHONY: test clean
Run Code Online (Sandbox Code Playgroud)

至:

SHELL := /bin/bash
PATH  := node_modules/.bin:$(PATH)

boot:
    @supervisor         \
      --harmony         \
      --watch etc,lib       \
      --extensions js,json      \
      --no-restart-on error     \
        lib

test: NODE_ENV=test
test:
    mocha                   \
      --harmony             \
      --reporter spec       \
        test

clean:
    @rm -rf node_modules

.PHONY: test clean
Run Code Online (Sandbox Code Playgroud)

不幸的是,第二个不起作用(节点进程仍以默认值运行) …

shell makefile environment-variables target

109
推荐指数
3
解决办法
15万
查看次数

使用mkdir时如何防止makefile中的"目录已存在错误"

我需要在我的makefile中生成一个目录,我想不要一遍又一遍地得到"目录已存在错误",即使我可以轻易忽略它.

我主要使用mingw/msys但是想要能够在其他shell /系统中运行的东西.

我试过这个,但它没有用,有什么想法?

ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) )))
-mkdir $(OBJDIR)
endif
Run Code Online (Sandbox Code Playgroud)

directory makefile exists

107
推荐指数
9
解决办法
11万
查看次数

你可以制作没有制表符的有效Makefile吗?

target: dependencies
    command1
    command2
Run Code Online (Sandbox Code Playgroud)

在我的系统(Mac OS X)上,make似乎要求Makefile在每command行的内容之前有一个制表符,否则会引发语法错误.

在创建或编辑Makefile时,这是一个烦恼,因为我的编辑器设置为全时空间.

你可以制作没有制表符的有效Makefile吗?

whitespace tabs makefile spaces

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

makefile执行另一个目标

我有一个这样的makefile结构:

all : 
    compile executable

clean :
    rm -f *.o $(EXEC)
Run Code Online (Sandbox Code Playgroud)

我意识到在运行"make all"之前,我一直在我的终端中运行"make clean"然后"clear".在尝试筛选令人讨厌的C++编译错误之前,我喜欢有一个干净的终端.所以我尝试添加第三个目标:

fresh :
    rm -f *.o $(EXEC)
    clear
    make all
Run Code Online (Sandbox Code Playgroud)

这是有效的,但这会运行make的第二个实例(我相信).有没有正确的方法来获得相同的功能而不运行第二个make实例?

makefile

103
推荐指数
3
解决办法
10万
查看次数

如何在makefile中添加多行注释

有没有办法在make语言中注释多行,就像在C语法中一样/* */

makefile

103
推荐指数
5
解决办法
6万
查看次数

为什么在shell脚本上使用make?

在我看来,简单的shell脚本更容易处理命令行参数.

为什么运行make而不是./make.sh是标准的

shell makefile compilation

102
推荐指数
5
解决办法
3万
查看次数