我收到一些意外的结果从另一个调用一个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) 我想知道是否有任何示例代码MakefileS( make)和CMakeLists.txt(cmake),这两个做同样的事情(唯一的区别在于,一个是写在make和其他的cmake).
我试着寻找'cmake vs make',但我从来没有找到任何代码比较.理解这些差异真的很有帮助,即使只是为了一个简单的案例.
我想创建一个多行字符串的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)
但我似乎找不到办法做到这一点.可能吗?
我正在尝试将软件安装到特定目录.我找到了几种方法,但不确定它们之间有什么区别.
./configure --prefix=***make install DESTDIR=***make install prefix=***./configure --prefix=***我对这四个的功能感到困惑.他们实现了同样的目标吗?
我想更改这个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)
不幸的是,第二个不起作用(节点进程仍以默认值运行) …
我需要在我的makefile中生成一个目录,我想不要一遍又一遍地得到"目录已存在错误",即使我可以轻易忽略它.
我主要使用mingw/msys但是想要能够在其他shell /系统中运行的东西.
我试过这个,但它没有用,有什么想法?
ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) )))
-mkdir $(OBJDIR)
endif
Run Code Online (Sandbox Code Playgroud) target: dependencies
command1
command2
Run Code Online (Sandbox Code Playgroud)
在我的系统(Mac OS X)上,make似乎要求Makefile在每command行的内容之前有一个制表符,否则会引发语法错误.
在创建或编辑Makefile时,这是一个烦恼,因为我的编辑器设置为全时空间.
你可以制作没有制表符的有效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实例?
在我看来,简单的shell脚本更容易处理命令行参数.
为什么运行make而不是./make.sh是标准的