2 ice  snow ice__snow 于 2016.02.12 21:18 提问

Makefile切换目录(windows平台)

在linux下使用Makefile时,可以切换目录,并且执行该目录下的另一个Makefile文件:
例如执行window目录下的另一个Makefile文件:

 window/window.obj:
    (cd window; make)

在windows环境下,这个写法不行,具体该怎样写呢?

补充一点:没有使用现成的编译环境,编译器是基于gcc的,具体是在cmd.exe下用make.exe执行Makefile来进行编译的

2个回答

zuishikonghuan
zuishikonghuan   2016.02.12 21:32
已采纳

编译器是什么呢?VC还是mingw?
比如你用VC,这是微软的手册:https://msdn.microsoft.com/zh-cn/library/dd9y37ha.aspx
或许你可以这样:
x\x.obj : x.cpo
(tab)nmake x\xxx.mak

ice__snow
ice__snow 回复zuishikonghuan: make -C可以,谢谢了
2 年多之前 回复
zuishikonghuan
zuishikonghuan 还有我看网上很多人这样写:target : cd xxx && make
2 年多之前 回复
zuishikonghuan
zuishikonghuan 在一个makefile里面调用make -C
2 年多之前 回复
zuishikonghuan
zuishikonghuan make -C 目录 这个行不行?
2 年多之前 回复
ice__snow
ice__snow 回复zuishikonghuan: 编译的文件比较多,而且在不同的目录下面,需要使用多个Makefile,在一个Makefile里面写是可以,但是太多了,我想分开写
2 年多之前 回复
zuishikonghuan
zuishikonghuan 或许你可以试试那个折中的方法,在依赖里面写上所有的源文件,然后在下面再执行一个make命令
2 年多之前 回复
ice__snow
ice__snow 没有使用编译环境,编译器是gcc,在cmd.exe下运行make.exe来执行Makefile
2 年多之前 回复
hijack00
hijack00   Rxr 2016.08.22 20:01
window/window.obj:
  cd window && make

或者

window/window.obj:
  make -C window
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
makefile 中切换工作目录的问题
我的makefile 需要进行一些特殊处理,有的时候需要切换工作目录,我在 make中写到<br /><br />cd /tmp<br />然后再执行操作,发现工作目录仍然是原来的目录。实际并没有进行切换/<br /><br />请问这是怎么一回事? 谢谢! <br /><br /><br />你可以这么写:<br />cd /tmp && you-operation-cmds<br />记住,一行命令启动一个sub shell,所以<br />前一行命令导致环境的变化在下一行会被reset
make切换到另一目录并执行另一目录makefile
../tools/make.exe -C ../tools/qemu
建立一个入口Makefile执行指定子目录中的Makefile
SUBDIRS = SUB_DIR_NAME_1 SUB_DIR_NAME_2 .PHONY: all all: @list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Clean in $$subdir";\ (cd $$subdir && make);\ done .PHONY: clean clean: @list='$
makefile进入子文件夹执行make
写了一个文件夹比较多的程序,在写主Makefile的时候,需要进入子文件夹执行make,在这里记录下,自己运行成功的Makefile。SUBDIRS=directory1 directory2 directory3 RECURSIVE_MAKE= @for subdir in $
Makefile文件之cd无语
今天在编译打包的时候,因为要写makefile文件,所以就少不了用cd命令。 一个有意思的问题出现了,那就是cd改变目录不管怎么样都不生效。 最后google了下下,发现cd只有在当行起做用,这就有点bt了 这一点记起来,以防后来再错。 引用别人的几句话  cd 命令在makefile里面只对当前行有用。比如你在/opt下执行makefile如果我要ta
一个适用于层级目录结构的makefile模版
 今天 写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含这个Makefile.env,只要增加一些变量就可以编译,特别方便添加新的功能模块自动解析头文件依赖 我的程序的目录结构是这样的: 1. 源文件目录src,模块xxx放在src/x
在Makefile中得到自己所在的目录
Makefile 可能会以这样的方式被调用: make -f some_dir/Makefile all 这种情况下, Makefile本身里面的命令不能对当前目录作出假设. GNU make手册里介绍了一个叫 MAKEFILE_LIST的变量, 它是个列表变量, 在每次make读入一个make文件时, 都把它添加到最后一项, 这样: 在Makefile的最开头, 通过访问这个变
单目录单个Makefile、多目录单个Makefile、多目录多个Makefile
1、单目录单个Makefile Makefile main.c fun.c fun.h /* fun.h */ void fun();/* fun.c */ #include void fun() { printf("fun!!!\n"); }/* main.c */ #include "fun.h" int main() { fun(); return 0; }/* M
多目录时Makefile 的编写方法
多目录时Makefile 的编写方法1 make分中预定义变量表 $* 不包含扩展名的目标文件名称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $< 第一个依赖文件的名称。 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@
编译多个目录源码的Makefile写法
文件组织如下: --Makefile --src目录 --main.cpp --func.cpp --func.h --head目录 --head.cpp --head.h --obj目录 Makefile写法如下 DIR_OBJ = ./obj DIR_SRC = ./src SRC = $(wildcard ${DIR_SRC}/*.cpp ${DIR_SRC}