草庐IT

Makefile

全部标签

c++ - 如何使用 g++ 创建具有特定名称的目标文件

我正在制作一个makefile,其中一个目标是exptrtest.o我如何使用g++创建一个具有该名称的对象文件,我的cpp文件的名称是exprtest.cpp而不是exptrtest.cpp?exptrtest.o:exprtest.cppg++-Wall-g-cexprtest.cpp为了更清楚,这是我的makefile:all:exprtestexprtest:exptrtest.odriver.oparser.tab.oscanner.og++-Wall-g-oexprtestexptrtest.odriver.oparser.tab.oscanner.oexptrtest.o

c++ - Qt pro文件的CXXFLAGS修改?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:ConfiguringtheGCCcompilerswitchesinQt,QtCreator,andQMake我想在我的makefile(CFLAGS和CXXFLAGS)中使用-O1而不是-O2对于我的Linux版本。我对如何基于.pro文件生成这些makefile的理解有些欠缺。这是因为当存在-O2时,Qt版本与我正在使用的G++版本相结合存在不稳定。目前,在我运行qmake之后,我正在运行一个替换脚本:sed-i's/\-O2/\-O1/g'AllProjects/Makefile.Release这是一

c++ - Qt pro文件的CXXFLAGS修改?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:ConfiguringtheGCCcompilerswitchesinQt,QtCreator,andQMake我想在我的makefile(CFLAGS和CXXFLAGS)中使用-O1而不是-O2对于我的Linux版本。我对如何基于.pro文件生成这些makefile的理解有些欠缺。这是因为当存在-O2时,Qt版本与我正在使用的G++版本相结合存在不稳定。目前,在我运行qmake之后,我正在运行一个替换脚本:sed-i's/\-O2/\-O1/g'AllProjects/Makefile.Release这是一

c++ - 为什么库链接器标志有时必须在最后使用 GCC?

我正在编写一个使用librt的小型C程序。如果我将链接标志放在开头而不是结尾,程序将无法编译,这让我感到非常惊讶:目前,要编译我所做的程序:gcc-oprogprog.c-lrt-std=gnu99如果我要执行以下操作,它将无法在librt中找到函数:gcc-std=gnu99-lrt-oprogprog.c然而,这适用于其他库。我在尝试使用简单的Makefile时发现了这个问题。make实际上编译prog.c而不是先喜欢(使用-c标志),然后进行链接。这是Makefile:CC=gccCFLAGS=-std=gnu99LIBS=-lrtLDFLAGS:=-lrtprog:prog.o

c++ - 为什么库链接器标志有时必须在最后使用 GCC?

我正在编写一个使用librt的小型C程序。如果我将链接标志放在开头而不是结尾,程序将无法编译,这让我感到非常惊讶:目前,要编译我所做的程序:gcc-oprogprog.c-lrt-std=gnu99如果我要执行以下操作,它将无法在librt中找到函数:gcc-std=gnu99-lrt-oprogprog.c然而,这适用于其他库。我在尝试使用简单的Makefile时发现了这个问题。make实际上编译prog.c而不是先喜欢(使用-c标志),然后进行链接。这是Makefile:CC=gccCFLAGS=-std=gnu99LIBS=-lrtLDFLAGS:=-lrtprog:prog.o

c++ - -DNDEBUG 通常来自哪里?

我们的构建系统发生了某种变化,以至于优化的构建不再获得-DNDEBUG添加到编译行。我搜索了我们的makefile并没有找到这个。对于大多数人来说,-DNDEBUG的起源是什么?它会如何改变?在我们确实有-DNDEBUG之前,我认为它没有从我们的任何makefile中删除。 最佳答案 由于编译器无法自行决定何时添加NDEBUG定义以及何时不添加,因此该标志始终由makefile或项目文件设置(取决于您的构建系统)。 关于c++--DNDEBUG通常来自哪里?,我们在StackOverfl

c++ - -DNDEBUG 通常来自哪里?

我们的构建系统发生了某种变化,以至于优化的构建不再获得-DNDEBUG添加到编译行。我搜索了我们的makefile并没有找到这个。对于大多数人来说,-DNDEBUG的起源是什么?它会如何改变?在我们确实有-DNDEBUG之前,我认为它没有从我们的任何makefile中删除。 最佳答案 由于编译器无法自行决定何时添加NDEBUG定义以及何时不添加,因此该标志始终由makefile或项目文件设置(取决于您的构建系统)。 关于c++--DNDEBUG通常来自哪里?,我们在StackOverfl

c++ - 为不同的输出目录生成 GCC 依赖项

我正在使用GCC生成依赖文件,但我的构建规则将输出放入子目录中。有没有办法告诉GCC将我的子目录前缀放在它为我生成的依赖文件中?gcc$(INCLUDES)-E-MM$(CFLAGS)$(SRC)>>$(DEP) 最佳答案 我假设您使用的是GNUMake和GCC。首先添加一个变量来保存您的依赖文件列表。假设您已经拥有一个列出我们所有来源的文件:SRCS=\main.c\foo.c\stuff/bar.cDEPS=$(SRCS:.c=.d)然后在makefile中包含生成的依赖:include$(DEPS)然后添加这个模式规则:#au

c++ - 为不同的输出目录生成 GCC 依赖项

我正在使用GCC生成依赖文件,但我的构建规则将输出放入子目录中。有没有办法告诉GCC将我的子目录前缀放在它为我生成的依赖文件中?gcc$(INCLUDES)-E-MM$(CFLAGS)$(SRC)>>$(DEP) 最佳答案 我假设您使用的是GNUMake和GCC。首先添加一个变量来保存您的依赖文件列表。假设您已经拥有一个列出我们所有来源的文件:SRCS=\main.c\foo.c\stuff/bar.cDEPS=$(SRCS:.c=.d)然后在makefile中包含生成的依赖:include$(DEPS)然后添加这个模式规则:#au

c++ - 如何将 makefile 转换为 JSON 编译数据库?

假设我们有适用于gcc和clang的项目的make文件(不是cmake/premake/ninja等)。我们希望从它们中生成JSON编译数据库,以将其提供给clang-modernize工具。怎么做这样的事情?(clang基础架构中是否有任何解析器或某些脚本,例如makeCC='cc_args.pygcc'CXX='cc_args.pyg++'或其他工具)? 最佳答案 我没有个人经验,但是Bear似乎针对您的场景。(它是从clang-modernize网站链接的。) 关于c++-如何将m