windows - cmake add_custom_target 在完成命令之前不会在 Windows 上打印到标准输出

标签 windows cmake stdout

我有一段运行 add_custom_target() 的 cmake,运行大约需要一分钟。在 cmake 上运行此命令时,只有在完成完整命令后才会打印标准输出。

-- Build files have been written to: C:/Soft_Dev/590008/JLSCONTROL/JLSOCSOURCE/MASTER/build
Building using cmake
Repo version is: v-0.1.0-902-gffaf1bb-dirty.
[1/2] cmd.exe /C "cd /D C:\myprogram\build && C:\pclint\lint4jsondb.exe --lint-binary pclp64.exe --jobs 10 -- std.lnt"

当我运行 cmd.exe/C "cd/D C:\myprogram\build && C:\pclint\lint4jsondb.exe --lint-binary pclp64.exe --jobs 10 -- std.lnt" 由我自己在终端中运行命令时将输出实时打印到标准输出。

cmake 是否缓冲标准输出?如果是这样,有没有办法停止它并让它在运行自定义命令时继续打印?

目前我没有使用任何特定的参数,只是目标的名称,然后是带参数的命令。

add_custom_target(LINT_WITH_PC_LINT ${PC_LINT_COMPILECOMMANDS_EXECUTABLE}
--compilation-db compile_commands.json
--lint-path ${PC_LINT_DIRECTORY}
--lint-binary ${PC_LINT_FILENAME}
--jobs 10
-- std.lnt ${PC_LINT_USER_FLAGS})

最佳答案

不确定这是否是您想要的,但您可以将“USES_TERMINAL”添加到您的自定义目标。

关于windows - cmake add_custom_target 在完成命令之前不会在 Windows 上打印到标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59356649/

相关文章:

git - 为什么 "git submodule add ..."写入 stderr 而不是 stdout?

ruby - 如何在不在标准输出中显示的情况下捕获命令的输出

c++ - 库正在调用可执行文件内的函数,而不是库内的函数

linux - 构建 PostgreSQL 时链接器错误 "undefined reference to SSL_get_peer_certificate"

fortran - Fortran 90 中的标准输入和输出单位?

python - 将字符串本地复制到剪贴板 python 3

CMake:打印出脚本中所有可访问的变量

windows - 汇编循环循环太多次

java - 从 Windows 命令提示符了解 JRE 是 32 位还是 64 位

python - 如何在 Python 中的 Linux 和 Windows 中使用 "/"(目录分隔符)?