如何产生安装错误并仍然执行稍后的<ListView x:Name="original" Style="{StaticResource myStyle}" ... />
步骤?
通常使用CMake,我会使用make install
来创建错误并继续运行后续步骤。但是,当我使用message(SEND_ERROR "error message")
指令将其插入到cmake_install.cmake中时,同一行会立即中止install(CODE ...)
的执行,并且不会执行后续步骤。
在CMake 2.8.7下,我被要求更新自定义安装步骤以继续安装的其余部分。我的客户有一个MATLAB安装步骤,在某些系统上失败,并希望在开发人员决定如何继续时减轻其影响。在下面的例子中,我已经替换了#34; matlab&#34; &#34; ARGS&#34;用&#34; touch&#34; &#34;的/ dev / null的/不能/存在&#34;所以任何人都应该能够重现问题(example project)。
具体问题
我可以使用以下命令成功地将一些内容插入到写入cmake_install.cmake的make install
指令中:
make install
这导致cmake_install.cmake中的以下内容:
install(CODE "execute_process (
COMMAND \"touch\" \"/dev/null/cannot/exist\"
ERROR_VARIABLE _err
RESULT_VARIABLE _res
)
if (NOT \${_res} EQUAL \"0\")
message( SEND_ERROR \"err: \${_err}, res: \${_res}\")
message( INFO \" Proceeding with any remaining steps, but 'make install' will fail\")
endif ()"
COMPONENT mycomponentname
)
产生的结果
IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "mycomponentname")
execute_process (
COMMAND "touch" "/dev/null/cannot/exist"
ERROR_VARIABLE _err
RESULT_VARIABLE _res
)
if (NOT ${_res} EQUAL "0")
message( SEND_ERROR "err: ${_err}, res: ${_res}")
message( INFO " Proceeding with any remaining steps, but 'make install' will fail")
endif ()
ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "mycomponentname")
注意:它立即中止,甚至不执行下一个INFO消息行。