标签: multiple-makefiles

从makefile中调用make

我有一个Makefile,它可以从一个新的shell中完美地调用,即:

make -C /dir/
Run Code Online (Sandbox Code Playgroud)

但是,如果我从另一个 Makefile 调用此Makefile ,则由于某些复杂的依赖性问题而失败.清楚地了解嵌套调用,通过打印make[1]:等显而易见,我怀疑make是以某种方式与其子进程共享变量.

无论如何在Makefile中调用一个干净的 make?如果我的构建工作是从一个干净的shell,它应该可以从另一个Makefile调用它而不解决脚本内部的恐怖!:)

谢谢!

makefile gnu-make multiple-makefiles

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

在子目录中失败使得不停止构建

我有一个设置,其中make通过一堆子目录并在这些目录中进行.我希望它立即停止构建失败.下面的代码片段说明了这一点.有人能指出我应该如何设置makefile的正确方向,或者有关从顶层到子目录构建的文档?

SUBDIRS = \
test1 \
test2 

all clean check :
    @for dir in $(SUBDIRS); do \
        if [ -d $$dir ]; then (cd $$dir; $(MAKE) $@) fi \
    done
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make multiple-makefiles

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

项目的多目录makefile

这是我的目录的样子:

/project
    makefile
    /ceda_lib
        makefile
        files....
    /general
        makefile
        files....
    /CLI
        makefile
        files....
    /objects
         files.o 
Run Code Online (Sandbox Code Playgroud)

Makefile文件(主):

1  #start other makefiles
2  
3 
4  o= ./objects
5  DEPS= Affine.hpp CEDA.hpp generalParameters.hpp generalFunctions.hpp
6  OBJ= $o/main.o $o/Affine.o $o/generalFunctions.o
7  CC=g++
8  CFLAGS= -Wall -g -I.
9  export CC
10 export CFLAGS
11 export DEPS
12 
13 all: 
14 ?---+$(MAKE) -C general
15 ?---+$(MAKE) -C ceda_lib 
16 ?---+$(MAKE) -C CLI
17 
18 run: $(OBJ) $(DEPS)
19 ?---$(CC) -o $@ $^
Run Code Online (Sandbox Code Playgroud)

其他makefile看起来像这样:(update2)

  1 include ../makefile.variables …
Run Code Online (Sandbox Code Playgroud)

makefile multiple-makefiles makefile-project

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

在Linux上安装WordNet(Ubuntu可信赖)

我想在Ubuntu上信任安装WordNet-3.0.

当我运行configure脚本时,我得到了:

checking for Tcl configuration... configure: WARNING: Can't find Tcl 
configuration definitions  
Run Code Online (Sandbox Code Playgroud)

这是一个警告,但仍然在没有创建makefile的情况下停止配置.

所以我下载并安装了tcl8.6.1,然后再次运行configure脚本,但我得到了:

checking for Tcl configuration... found /usr/local/lib/tclConfig.sh
checking for Tk configuration... configure: WARNING: Can't find Tk 
configuration definitions  
Run Code Online (Sandbox Code Playgroud)

所以我下载并安装了tk8.6.1,然后再次运行configure脚本,但警告消息仍然存在.

我找到tkConfig.sh~/Downloads/tk8.6.1/unix/,所以我将它复制到/ usr/local/lib,再次运行脚本,但我得到了:

checking for Tcl configuration... found /usr/local/lib/tclConfig.sh
checking for Tk configuration... found /usr/local/lib/tkConfig.sh
checking for existence of /usr/local/lib/tclConfig.sh... loading
checking for existence of /usr/local/lib/tkConfig.sh... loading
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to …
Run Code Online (Sandbox Code Playgroud)

ubuntu makefile configure multiple-makefiles wordnet

4
推荐指数
1
解决办法
3904
查看次数

当有变化时,如何在调用子构建时检查依赖项?

如果我有一个调用另一个makefile的makefile,如何让master makefile正确检查下级makefile的依赖项是否已更改?

例如,如果我有规则

server:
     @cd $(SERVERDIR) && $(MAKE)
Run Code Online (Sandbox Code Playgroud)

这会在我构建可执行文件"server"的子目录中调用make.但是,如果我更改组成服务器的其中一个文件,则父make不会看到更改并拒绝重建服务器 - "make:`server'是最新的."

如何让master makefile正确检测其中一个相关文件(例如$(SERVERDIR)/server.c)的变化?

makefile multiple-makefiles

3
推荐指数
1
解决办法
2926
查看次数