我想在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服务器发送请求?
答案 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消息并获得相同的响应。