0

之前已针对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 编译器感兴趣

4

1 回答 1

2

尝试

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

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

sed --version

qcc -V | sed -n
于 2012-03-30T14:18:51.693 回答