我正在寻找一种在java编译期间检测错误的方法,然后是在stdout中打印错误消息的方法,而不是将其重定向到文件中。
function(generate_swagger_code spec_path lang package_name)
set(target_dir ${CMAKE_CURRENT_BINARY_DIR}/swagger)
get_filename_component(fname_noext ${spec_path} NAME_WE)
add_custom_target(generate_swagger_${fname_noext} ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${target_dir}
COMMENT "Starting swagger autogeneration in ${target_dir}"
COMMAND java
-jar ${SWAGGER_CODEGEN_CLI} generate
-i ${spec_path}
-l ${lang}
-DpackageName=${package_name}
-o ${target_dir} &> ${target_dir}/autogenerate.log
VERBATIM
)
endfunction(generate_swagger_code)发布于 2021-05-10 11:27:41
Basic linux说2>&1会将标准错误重定向到标准输出。没有可以传递给javac的选项,所以这是您唯一的选择。
检测失败很简单;javac命令的返回值将返回一个非零值;这是基本的cmake内容,任何教程都会介绍如何提取它。
你的问题标题涉及“编译错误”,但你的代码不是编译java代码,而是运行VM来执行swagger_codegen_cli,这与java代码略有不同。SWAGGER_CODEGEN_CLI应用程序可能没有正确注册退出代码。如果真是这样,你也无能为力。
https://stackoverflow.com/questions/67464288
复制相似问题