12

以下のコードでは、コンパイル時THE_VERSION_STRINGに環境変数の値からの値を取得したいと思いますMY_VERSION

namespace myPluginStrings {
const  char* pluginVendor = "me";
const  char* pluginRequires =  THE_VERSION_STRING;
};

したがって、次のように入力すると、次のようになります。

export MY_VERSION="2010.4"

pluginRequiresMY_VERSION実行時に他の何かに設定されている場合でも、「2010.4」に設定されます。

更新:(2月21日)皆さんの助けに感謝します。できます。ビルドシステムとしてRakeを使用しているので、各CFLAGSはruby変数です。また、値は引用符で囲む必要があります。したがって、私にとってのgccコマンドラインは次のようになります。

gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\"" 

これは、これが私のRakefileにあることを意味します。

"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
4

2 に答える 2

18

正しく思い出せば、コンパイル時-Dにgccでコマンドラインパラメーターを値に使用できます。#define

すなわち:

$ gcc file.c -o file -D"THE_VERSION_STRING=${THE_VERSION_STRING}"
于 2010-02-19T21:50:42.917 に答える
1

以下のコードでは、コンパイル時に環境変数MY_VERSIONの値からTHE_VERSION_STRINGの値を取得したいと思います。

いいえ、このようにすることはできません。環境変数を抽出する唯一の方法は、実行時にgetenv()関数を使用することです。値を明示的に抽出して、にコピーする必要がありますpluginRequires

コンパイル時定数の効果が必要な場合は、Sethが提案するように、コンパイラコマンドラインで定義を指定する必要があります。

于 2010-02-19T23:37:10.170 に答える