【问题标题】:How to pick find qcc version in a Makefile?如何在 Makefile 中选择查找 qcc 版本?
【发布时间】:2012-03-29 21:26:47
【问题描述】:

以前曾针对 gcc 提出过类似的问题。 但是,qcc 有点不同(请参阅下面的版本输出)。

qcc -V
cc: targets available in /opt/qnx641/host/linux/x86/etc/qcc:
    4.3.3,gcc_ntoarmle_cpp
    4.3.3,gcc_ntoshle_acpp
    4.3.3,gcc_ntox86_cpp
    4.3.3,gcc_ntoppcbe
    4.3.3,gcc_ntomipsbe_cpp
    4.3.3,gcc_ntoshle_cpp
    4.3.3,gcc_ntoarmle_gpp
    4.3.3,gcc_ntoshle_ecpp-ne
    4.3.3,gcc_ntoshle_cpp-ne
    4.3.3,gcc_ntomipsbe_gpp
    4.3.3,gcc_ntomipsle_ecpp
    4.3.3,gcc_ntox86        (default)
    4.3.3,gcc_ntoppcbe_cpp-ne
    4.3.3,gcc_ntox86_ecpp-ne
    4.3.3,gcc_ntoshle_acpp-ne
    4.3.3,gcc_ntoppcbespe_acpp
    4.3.3,gcc_ntoppcbe_ecpp-ne
    4.3.3,gcc_ntomipsle
    4.3.3,gcc_ntoppcbe_ecpp
    4.3.3,gcc_ntoarmle_ecpp
    4.3.3,gcc_ntox86_gpp
    4.3.3,gcc_ntoshle_gpp
    4.3.3,gcc_ntoshle
    4.3.3,gcc_ntomipsbe_ecpp-ne
    4.3.3,gcc_ntomipsbe_acpp-ne
    4.3.3,gcc_ntoarmle
    4.3.3,gcc_ntomipsbe_acpp
    4.3.3,gcc_ntomipsle_cpp-ne
    4.3.3,gcc_ntoppcbespe_cpp
    4.3.3,gcc_ntoppcbespe_ecpp-ne
    4.3.3,gcc_ntox86_acpp-ne
    4.3.3,gcc_ntox86_acpp
    4.3.3,gcc_ntomipsle_acpp
    4.3.3,gcc_ntomipsle_acpp-ne
    4.3.3,gcc_ntoarmle_cpp-ne
    4.3.3,gcc_ntomipsbe_cpp-ne
    4.3.3,gcc_ntomipsle_ecpp-ne
    4.3.3,gcc_ntoppcbespe_ecpp
    4.3.3,gcc_ntoppcbespe_cpp-ne
    4.3.3,gcc_ntox86_ecpp
    4.3.3,gcc_ntoshle_ecpp
    4.3.3,gcc_ntoppcbespe_acpp-ne
    4.3.3,gcc_ntoppcbe_gpp
    4.3.3,gcc_ntoppcbe_acpp-ne
    4.3.3,gcc_ntoppcbespe_gpp
    4.3.3,gcc_ntoppcbe_cpp
    4.3.3,gcc_ntomipsbe_ecpp
    4.3.3,gcc_ntoppcbe_acpp
    4.3.3,gcc_ntoarmle_acpp-ne
    4.3.3,gcc_ntox86_cpp-ne
    4.3.3,gcc_ntomipsbe
    4.3.3,gcc_ntomipsle_cpp
    4.3.3,gcc_ntoarmle_acpp
    4.3.3,gcc_ntomipsle_gpp
    4.3.3,gcc_ntoarmle_ecpp-ne
    4.3.3,gcc_ntoppcbespe

我需要制作一个通用的 makefile 来区分两种不同的编译器:上面的编译器和版本 3.3.5。

我知道如何使用 gcc 来做到这一点(如下所示:Checking the gcc version in a Makefile?)。但是,我似乎无法弄清楚如何使用它来创建一个 ifeqifdef 来处理我从 qcc 获得的输出。

有什么想法吗?

编辑 只对 ntox86 / ntox86_cpp 编译器感兴趣

【问题讨论】:

  • 我认为上面的输出来自 v4.3.3,而 v3.3.5 的输出将具有相同的格式。所以你想知道如何获取“4.3.3”或“3.5.5”,然后使用ifeq技术,对吗?
  • 没错。我试过使用 ` | grep ntox86` 以减少列表,但这不起作用。

标签: makefile qnx qcc


【解决方案1】:

试试

qcc -V | sed -n '/,/{s/,.*//;p;q}'

编辑:
多奇怪。这需要几次迭代。你能试试这两个实验吗:

sed --version

qcc -V | sed -n

【讨论】:

  • 不高兴。它打印出与上面完全相同的内容,包括整个列表
  • "qcc -V | sed -n" 打印了用法,紧接着是上面的相同列表。
  • 事实证明 qcc 将其列表发送到 stderr 而不是 stdout。我使用了你的方法,除了我必须在命令中添加 2>&1。
猜你喜欢
  • 2015-07-17
  • 1970-01-01
  • 2011-07-08
  • 2012-05-06
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
相关资源
最近更新 更多