遇到 CMake POST_BUILD 命令的问题。每当我尝试构建我的 CMake 项目 (libFDSequencer) 时,都会出现伪随机错误代码(介于 123 和 9009 之间的任何错误代码)。我已将问题的根源缩小到 CMake 显然会围绕 a add_custom_command() 调用生成额外的批处理代码这一事实。我通过使用 Visual Studio 构建我的项目、转到我的项目属性并检查 POST_BUILD 命令来发现这一点。
我运行自定义命令的 CMake 代码如下所示...
# The first line is the original command I want to run (which also work when
# I just copy paste it into the POST_BUILD commands in project properties).
MESSAGE("${CMAKE_CURRENT_SOURCE_DIR}/mexTesting.cmd ${CMAKE_CURRENT_SOURCE_DIR}/src/fd/util/interfaces ${CMAKE_CURRENT_SOURCE_DIR}/mex ${CMAKE_CURRENT_SOURCE_DIR}/build/RelWithDebInfo/ ${CMAKE_CURRENT_SOURCE_DIR}/include " \"-lFDSequencer\ -lFDCommon\ -lSetupAPI\ -lwbemuuid\" " ")
add_custom_command(
TARGET FDSequencer
POST_BUILD
COMMAND "echo Hello World"
)
MESSAGE("\n-----DONE------\n")
在我的 POST_BUILD 项目属性部分中使用 CMake 生成代码的版本如下所示...
setlocal
"echo Hello World"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
但是,当我像这样运行 echo Hello World 时(我假设它是由 add_custom_command() 运行的)(在 VS 项目属性的 POST_BUILD 命令字段中编辑)
"echo Hello World"
or
echo Hello World
当我删除额外的代码时它工作得很好。我想知道是否有任何方法可以从 CMake 禁用此代码生成,或者是否有一个包含此生成代码的文件我可以以某种方式覆盖?有谁知道为什么会产生这个(除了不必要的错误处理)?