GNU Make中CPPFLAGS和CXXFLAGS之间有什么区别?
我想了解'gmake'和'make'之间的区别?
在我的linux盒子上,它们完全相同:
% gmake --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
% make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)
我猜这在所有平台上都不一样?是否有充分的理由使用其中一个?
为什么有这两个名字有一些历史意义吗?
我收到一些意外的结果从另一个调用一个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,它通过计算变量中的名称来动态创建多个目标.(例如foo $(VAR):$(PREREQS)).有没有什么方法可以让gnu make在扩展这些变量之后吐出一系列目标?
我希望能够获得aribitrary makefile的目标.我正在尝试为我的shell编写一个完成函数.
我安装MinGW和MSYS,补充C:\MinGW\bin到PATH,但我仍然无法在Windows上运行的Makefile cmd.我想运行cmd.exe并在那里键入,例如,make all但我的cmd说没有这样的命令.
我该怎么办?我不想使用MSYS shell,这不是重点.任何想法如何在Windows cmd中使用GNU Make,因为我可以在Ubuntu中使用它?我对此不感兴趣Cygwin.
自从我使用以来已经有一段时间了make,所以请耐心等待......
我有一个flac包含.FLAC文件的目录.我有一个相应的目录,mp3包含MP3文件.如果FLAC文件比相应的MP3文件(或相应的MP3文件不存在)更新,那么我想运行一堆命令将FLAC文件转换为MP3文件,然后复制标签.
踢球者:我需要flac递归搜索目录,并在mp3目录中创建相应的子目录.目录和文件名称中可以包含空格,并以UTF-8命名.
而且我想make用来驱动它.
我正在尝试在makefile中执行此操作,但它失败的可能性非常大:
M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?我想它与逃避有关,但是在哪里和哪里?
关于GNU make中的作业数量是否应该等于核心数量似乎存在争议,或者如果您可以通过添加一个可以排队等待而其他人"工作"的额外作业来优化构建时间.
使用-j4或-j5四核系统更好吗?
您是否看过(或已完成)支持其中一种或哪种的基准测试?
对于Make中的变量赋值,我看到:=和=运算符.他们之间有什么区别?