2017-01-11 3 views
0

すべてがタイトルに含まれていますが、より多くのコンテキスト情報があります。 すべてのコンポーネントが独立したライブラリを作成しています(実際には1 git repoを管理する方が簡単なためです)。 そのライブラリのルートフォルダには、ライブラリのコンポーネントの各部分に1つのサブフォルダがあり、正確に3つの「興味深いフォルダ」(src、tests、include/components_name)があります。私はforeachループでこれらのフォルダをハードコードしていますので、デフォルトですべてのアクションがすべてのモジュールに対して実行されます。ここにcmakeが予約している名前のリストはありますか?

問題は、モジュールの1つに "実際には比較的一般的な" option_parserという名前が付けられていて、cmakeによって "予約"されているように見えます。私は "option_parser_test"、 "option_parser_tests"、および "option_parser_"ルートに基づく他のランダムな名前を試しました。

ここに私の疑問があります:どこで私はcmakeが予約している名前を避ける方法を学ぶことができますか? とにかく私のバイナリに影響を与えることができます(ビルドシステムのためにプロジェクトの名前を変更するのは馬鹿だと思うからです)。

+1

'cmake'によって予約されているようです - どのエラー/警告が' option_parser'モジュールが予約されていると思いますか?そして、あなたは "モジュール"によって何を意味しますか? ' .cmake'というスクリプトが' include() 'コマンドに含まれていますか?または何? – Tsyvarev

+0

私のgit repoが$ HOME/foobarだとしましょう。その中には、option_parser、unique_res、およびdyn_arrayという名前のフォルダがいくつかあります。それぞれはスタンドアロンのライブラリですが、cmakeを使用してそれらのすべてを(今のところ)1つのライブラリバイナリ(共有しているかどうかは重要ではありません)にコンパイルしたいと思います。それらの構造は常に同じです。./tests、./include/$(pwd)、./src。だから私は彼らをモジュールと呼ぶ。正確なエラーは "ターゲット名" ./option_parser "は予約されているか、ジェネレータ式などの特定のCMake機能には有効ではないため、未定義の動作が発生する可能性があります。 – user3459474

+1

それは*モジュール名* 'option_parser'ではなく、予約されている**ターゲット名**'。/ option_parser'ですね。単にドット( '。)'を含む*ターゲット名*を使用しないでください。通常、ターゲット名は**の識別記号**であり、句読点やその他の特殊文字は含まれません。 – Tsyvarev

答えて

0

これは本当に簡単です。

cmake --help-command-list 
cmake --help-variable-list 
cmake --help-property-list