Gmake正在隐式上删除Solaris 10的某些文件
gmake is deleting some files implicitly on Solaris 10
我正在为我的构建过程运行GNU gmake
。我使用以下文件扩展名:
.pc: pro*c code (compiled by using oracle's proc compiler)
.cpp : c++ code (compiled by GNU g++ compiler)
.o: object file
.mc: c++ code (compiled by GNU g++ compiler)
.mo: object file
.pc
文件由Oracle proc
编译器编译,并且输出具有扩展.cpp
,或者由g++
编译器编译以生成.o
文件。所有.o
文件最终都会链接在一起以制作可执行文件。
对于其他一些要求,我需要在下面的.pc文件中包含一些特殊的代码块。
#ifdef SPCL_BLCK
// some code
#endif // end of SPCL_BLCK
我需要走不同的路径才能在有或没有特殊代码零件的情况下拥有可执行的变体。没有特殊代码部分,路径为:
.pc -> .cpp -> .o -> executable
使用特殊代码部分,路径为:
.pc -> .mc -> .mo -> executable
我的proc标志定义为:
PROCFLAGS := code=cpp 'include=(<<list of comma-separated include dirs>>)'
正常规则(对于没有特殊代码的路径):
.pc.c:
proc $(PROCFLAGS) $<
%.o: %.c
g++ -c $(CCFLAGS) $<
在哪里,CCFLAGS
是通常的C 编译器标志
规则(对于特殊代码的路径):
%.mo: %.mc
$(CC) -c $(CCFLAGS) -DSPCL_BLCK -o $@ -x c++ $<
%.mc: %.pc
$(PROC) $(PROCFLAGS) define=SPCL_BLCK oname=$@ $<
一切都很好,但是在成功构建后,.mc
文件将删除。我看到这是由rm
命令完成的,但是是否有任何隐式规则可以推动.mc
文件的删除?我可以有一些命令可以停止触发隐式规则吗?
我需要在 gmakefile
中定义以下内容:
.PRECIOUS:%.c %.mc
否则,GNU gmake
认为.mc文件是中间文件,并驱动删除这些.mc
文件
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- Gmake正在隐式上删除Solaris 10的某些文件
- 使用Solaris 64位或Linux 32位到Linux 64位的内存映射文件
- 在 c++ solaris 中编译多个文件
- 是否可以在为Solaris SPARC生成二进制文件的英特尔计算机上编写QT C++项目
- C++ Sun Solaris 11 中的可执行文件错误
- Boost1.44.0文件系统v3无法在solaris Sparc 64位平台上正常运行
- Solaris Imakefile复制文件规则
- 在编译时是否有标识SunOS/Solaris版本的头文件?
- Solaris中如何检测文件泄漏以及相应的代码