从linux命令行向CMake服务器发送请求

时间:2017-06-22 12:22:12

标签: linux command-line cmake cmake-server

我想在Linux命令行中使用cmake服务器模式。文档告诉我如下所示启动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" ==]

我尝试向服务器发送请求,但我只得到hello响应:

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

如何向cmake服务器发送请求?

1 个答案:

答案 0 :(得分:0)

CMake服务器将按以下格式预期--debug--pipe模式的消息:

[== "CMake Server" ==[

...你的消息......

 ]== "CMake Server" ==]

CMake服务器帮助页面有更多示例,但这里有一些可以帮助您入门的内容。

对于以下示例,我使用了CMake 3.10,如果您使用的是旧版本,则可能需要将"protocolVersion":{"major":1}修改为{"major":0}

您还需要拥有一个CMake项目并知道CMakeLists.txt文件所在的源目录以及一个构建文件夹,其中cmake将放置树文件。

如果您想尝试--debug --experimental标志,服务器将期望从标准输入获得输入。因此,在您运行cmake -E server --debug --experimental之后,输入以下内容:

[== "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的东西。以您的命令为例,在后台运行cmake -E server --pipe=pipe --experimental后,您可以使用以下命令:

nc -U pipe

此时,nc也期望在标准输入中输入,因此您将能够像以前一样输入相同的json消息并获得相同的响应。

相关问题