【问题标题】:Mixing C++98 and C++11 source in automake/gcc在 automake/gcc 中混合 C++98 和 C++11 源代码
【发布时间】:2015-01-10 10:35:25
【问题描述】:

我有一个使用 automake 工具构建的项目中的 cpp 文件列表。

其中一些是使用 C++11 之前的标准(即 C++98)编写的,它们无法使用 gcc 的 c++11 标志(-std=c++11)进行编译。

最新的 cpp 文件使用 C++11 标准,在编译时需要 -std=c++11 标志。

我可以在 Automake 中定义两个 cpp 源文件列表并给出不同的编译标志吗?

【问题讨论】:

  • 无论答案如何,请考虑升级旧资源。从长远来看,这将使您的生活更轻松。
  • 如果您在同一个可执行文件中混合使用 C98 和 C11,您可能会遇到问题。如果您使用 boost,您很可能会遇到问题。
  • @Deduplicator 和 n.m.谢谢你的建议。由于一次转换完整项目很难,我将使用此解决方案作为临时解决方案。

标签: c++ c++11 gcc autoconf automake


【解决方案1】:

这是直接从Setting per-file flags with automake翻录的

您可以将您的 c++11 代码捆绑到一个库中,并在 Makefile.am 中为该代码子集提供不同的标志

bin_PROGRAMS        = test 
test_SOURCES        = main.cpp 
test_LDADD          = c11code.la 
noinst_LTLIBRARIES  = c11code.la  
c11code_la_SOURCES  = cxx1_1.cpp cxx1_2.cpp cxx1_3.cpp 
c11code_la_CXXFLAGS = $(CXXFLAGS) -std=c++11

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多