2013-04-06 62 views
0

我正在用C++封装一个大型C库并将一些外部层转换为C++。有没有办法将g ++中的-std = ***应用于只有一个文件

遵循在转换中一次只能分割一件东西的原则,直到后来才写makefile。

我要做到以下几点:

g++ a.c b.c d.c e.c --std=c++11 test.cpp 

甚至

g++ a.c b.c d.c --std=c++11 e.cpp test.cpp 

晚了一点。

是否有指定-std = C++ 11仅适用于C++文件的方法?要做到这一点

+0

有很多快速和肮脏的方式来做到这一点。但是如果你的项目会增长,你应该看看Makefiles。 – mvarshney 2013-04-06 03:49:41

回答

0

一种方法是打破你的编译过程中两个不同阶段:

1)编译与性病符单独对象文件:

g++ -S a.c b.c d.c 
g++ -S a.cpp b.cpp d.cpp -std=c++11 

2)编译使用所有最终的可执行文件生成的目标文件:

g++ -o myelf a.s b.s d.s 
+0

这不是一个好的解决方案,但它是一个解决方案。 – 2013-04-11 15:00:11

+0

然而,您可以跳过第二步并执行:g ++ -S a.c b.c d.c; g ++ a.s b.s c.s d.cpp -std = C++ 11 – 2013-04-11 15:02:38

相关问题