2017-06-22 3 views
0

Linuxコマンドラインからcmakeサーバモードを使いたいと思います。マニュアルは、次のようにcmakeのを開始するために私に語った:linuxコマンドラインからCMakeサーバにリクエストを送る

cmake -E server (--debug|--pipe <NAMED_PIPE>)

しかし、私にとって、それは唯一このように動作します:

cmake -E server --experimental --debug 

[== "CMake Server" ==[ 
{"supportedProtocolVersions":[{"isExperimental":true,"major":1,"minor":0}],"type":"hello"} 
]== "CMake Server" ==] 

私はサーバーにリクエストを送信しようとしたが、私は取得のみこんにちはの応答:

cat request.txt | cmake -E server --experimental --debug 
[== "CMake Server" ==[ 
{"supportedProtocolVersions":[{"isExperimental":true,"major":1,"minor":0}],"type":"hello"} 
]== "CMake Server" ==] 

私はどのように要求をcmakeサーバーに送ることができますか?

+0

少なくとも私は 'cmake -E server --pipe = pipe --experimental'でパイプを作成できます。私はまだ私の要求から答えを得ることができません。 – erikzenker

答えて

0

CMakeのサーバは、次の形式のいずれかで--debugまたは--pipeモードのメッセージを期待されます:cmakeのサーバーのヘルプページがあり

]== "CMake Server" ==] 

[== "CMake Server" ==[ 

...あなたのメッセージ...もっと多くの例がありますが、ここでは始めるのに役立つものがあります。

次の例では、CMake 3.10を使用しましたが、古いバージョンを使用している場合は、"protocolVersion":{"major":1}{"major":0}に変更する必要があります。

また、CMakeプロジェクトがあり、CMakeLists.txtファイルがあるソースディレクトリと、cmakeによってツリー外ファイルが配置されるビルドフォルダを知っている必要があります。

--debug --experimentalフラグを試してみると、サーバーは標準入力からの入力を期待しています。だから、あなたはcmake -E server --debug --experimentalを実行した後、右入力以下:今いくつかのファイルをcontaintすべき

[== "CMake Server" ==[ 

{"cookie":"yummy","type":"handshake","protocolVersion":{"major":1}, 
    "sourceDirectory":"/path/to/CMakeList.txt","buildDirectory":"/path/to/build/folder", 

"generator":"Unix Makefiles"} 

]== "CMake Server" ==] 

それは情報の束とビルドフォルダに応答する必要があります。

代わりに名前付きパイプを使用する場合は、netcatのようなものを使用する必要があります。あなたができるようになるので、この時点で

nc -U pipe 

、同様に標準入力で入力を期待されますNC:バックグラウンドでcmake -E server --pipe=pipe --experimentalを実行した後、一例として、あなたのコマンドを使用して、次のコマンドを使用することができます前と同じjsonメッセージを入力して同じ応答を得ることができます。

関連する問題