使用CMake构建project.sln时发布构建事件错误

本德里克斯

我的任务是将大型框架转换并构建为CMake树和二进制文件。当前,该框架是使用VS 2017构建的,创建了一个名为Framework_static_vc15.sln的解决方案。由于这是一个大型项目,因此我选择使用转换器为该项目的每个部分创建CMakeLists.txt文件。这是我使用的转换器的链接。

https://cmakeconverter.readthedocs.io/en/develop/intro.html

此转换器成功创建了所需的所有文本文件,我可以运行以下命令

cmake -S . -B build

创建一个我应该能够在其上运行的目录cmake --build build但是,当我运行上述命令时,每次构建都会失败,并显示以下错误

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: The command "setlocal [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcx
proj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: cd C:\Work\SVN\Software\Framework\Source\UeiDaqCore [C:\Work\SVN\Software\Framework\build\Source\
UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: C: [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if not exist ..\..\CPP\lib mkdir ..\..\CPP\lib [C:\Work\SVN\Software\Framework\build\Source\UeiDa
qCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: copy C:\Work\SVN\Software\Framework\Source\UeiDaqCore\..\..\Output\Win32\vs15_DebugUeiDaqvc15SD.l
ib ..\..\CPP\lib [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: cd.      [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: cd.   [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: :cmEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [C:\Work\SVN\Software\Framework\build\S
ource\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: :cmErrorLevel [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: exit /b %1 [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: :cmDone [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqC
ore_vc15.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1
38,5): error MSB3073: :VCEnd" exited with code 1. [C:\Work\SVN\Software\Framework\build\Source\UeiDaqCore\UeiDaqCore_vc
15.vcxproj]

此错误来自名为UeiDaqCore的子项目中的构建后事件,该事件在CMake尝试执行以下命令时发生UeiDaqCore_vc15.vcxproj -> C:\Work\SVN\Software\Framework\Output\Win32\vs15_Debug\UeiDaqCore_vc15SD.libCMake给了我没有所有路径的错误列表,就在这里。

PostBuildEvent:
  setlocal
  cd C:\Work\SVN\Software\Framework\Source\UeiDaqCore
  if %errorlevel% neq 0 goto :cmEnd
  C:
  if %errorlevel% neq 0 goto :cmEnd
  if not exist ..\..\CPP\lib mkdir ..\..\CPP\lib
  if %errorlevel% neq 0 goto :cmEnd
  copy C:\Work\SVN\Software\Framework\Source\UeiDaqCore\..\..\Output\Win32\vs15_DebugUeiDaqvc15SD.lib ..\..\CPP\lib
  if %errorlevel% neq 0 goto :cmEnd
  cd.
  if %errorlevel% neq 0 goto :cmEnd
  cd.
  if %errorlevel% neq 0 goto :cmEnd
  :cmEnd
  endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
  :cmErrorLevel
  exit /b %1
  :cmDone
  if %errorlevel% neq 0 goto :VCEnd
  :VCEnd
  The system cannot find the file specified.

我在Visual Studio UeiDaqCore项目文件中查找了名为的构建后事件setlocal,并且在CmakeLists.txt文件中查找了setlocal构建后事件,但找不到。从错误文本看来,它正在寻找一个名为的项目UeiDaqCore_vc15.vcxproj和一个名为的文件UeiDaqCore_vc15SD.lib,但找不到它。我不确定为什么,因为这两个文件都位于其查找的文件夹中。

我正在使用管理员命令提示符运行CMake,因为我已经看到其他人遇到了此问题,并且这是由于没有管理员特权引起的。在此之下,我将为UeiDaqCore子项目发布完整的CmakeLists.txt。

project(UeiDaqCore_vc15 CXX)

################################################################################
# Source groups
################################################################################
set(no_group_source_files
    ReadMe.txt
)
source_group("" FILES ${no_group_source_files})

set(Headers
    ../../CPP/include/UeiChannel.h
    ../../CPP/include/UeiConstants.h
    ../../CPP/include/UeiCustomScale.h
    ../../CPP/include/UeiDaq.h
    ../../CPP/include/UeiDaqAnsiC.h
    ../../CPP/include/UeiDaqError.h
    ../../CPP/include/UeiDataStream.h
    ../../CPP/include/UeiDevice.h
    ../../CPP/include/UeiDeviceEnumerator.h
    ../../CPP/include/UeiDriverEnumerator.h
    ../../CPP/include/UeiEvent.h
    ../../CPP/include/UeiException.h
    ../../CPP/include/UeiFrameUtils.h
    ../../CPP/include/UeiMessaging.h
    ../../CPP/include/UeiObject.h
    ../../CPP/include/UeiReader.h
    ../../CPP/include/UeiResourceParser.h
    ../../CPP/include/UeiSession.h
    ../../CPP/include/UeiSessionGroup.h
    ../../CPP/include/UeiStructs.h
    ../../CPP/include/Ueisystem.h
    ../../CPP/include/UeiTiming.h
    ../../CPP/include/UeiTrigger.h
    ../../CPP/include/UeiWriter.h
    pugxml.h
    resource.h
    ResourceParser.h
    SensorConversion.h
    SignalParser.h
    StdAfx.h
    UeiAnsiCSession.h
    UeiChannelimpl.h
    UeiCJCConverter.h
    UeiDaqCore.h
    UeiDaqCoreVer.h
    UeiDaqDriver.h
    UeiDaqDriverSession.h
    UeiDaqLV.h
    UeiDataStreamImpl.h
    UeiDeviceEnumeratorImpl.h
    UeiDeviceImpl.h
    UeiDriverEvent.h
    UeiMessagingImpl.h
    UeiObjectImpl.h
    UeiReaderImpl.h
    UeiRTDConverter.h
    UeiSessionImpl.h
    UeiSessionSettings.h
    UeiTimingImpl.h
    UeiTriggerImpl.h
    UeiWriterImpl.h
    UeiXmlParser.h
)
source_group("Headers" FILES ${Headers})

set(Sources
    ResourceParser.cpp
    SensorConversion.cpp
    StdAfx.cpp
    UeiChannel.cpp
    UeiChannelImpl.cpp
    UeiCJCConverter.cpp
    UeiCustomScale.cpp
    UeiDaqAnsiC.cpp
    UeiDaqCore.cpp
    UeiDaqLV.cpp
    UeiDataStream.cpp
    UeiDataStreamImpl.cpp
    UeiDevice.cpp
    UeiDeviceEnumerator.cpp
    UeiDeviceEnumeratorImpl.cpp
    UeiDeviceImpl.cpp
    UeiDriverEnumerator.cpp
    UeiException.cpp
    UeiFrameUtils.cpp
    UeiMessaging.cpp
    UeiMessagingImpl.cpp
    UeiObject.cpp
    UeiObjectImpl.cpp
    UeiReader.cpp
    UeiReaderImpl.cpp
    UeiResourceParser.cpp
    UeiRTDConverter.cpp
    UeiSession.cpp
    UeiSessionGroup.cpp
    UeiSessionImpl.cpp
    UeiSessionSettings.cpp
    UeiSystem.cpp
    UeiTiming.cpp
    UeiTimingImpl.cpp
    UeiTrigger.cpp
    UeiTriggerImpl.cpp
    UeiWriter.cpp
    UeiWriterImpl.cpp
    UeiXmlParser.cpp
)
source_group("Sources" FILES ${Sources})

set(ALL_FILES
    ${no_group_source_files}
    ${Headers}
    ${Sources}
)

################################################################################
# Target
################################################################################
add_library(${PROJECT_NAME} STATIC ${ALL_FILES})

add_precompiled_header(${PROJECT_NAME} "StdAfx.h" "StdAfx.cpp")

use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
set(ROOT_NAMESPACE UeiDaqCore)

################################################################################
# Target name
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
    TARGET_NAME_DEBUG   "${PROJECT_NAME}SD"
    TARGET_NAME_RELEASE "${PROJECT_NAME}S"
)
################################################################################
# Output directory
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
    OUTPUT_DIRECTORY_DEBUG   "${CMAKE_CURRENT_SOURCE_DIR}/../../Output/${CMAKE_VS_PLATFORM_NAME}/vs15_$<CONFIG>"
    OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../Output/${CMAKE_VS_PLATFORM_NAME}/vs15_$<CONFIG>"
)
################################################################################
# Include directories
################################################################################
target_include_directories(${PROJECT_NAME} PUBLIC
    "${CMAKE_CURRENT_SOURCE_DIR}/../../CPP/include;"
    "$ENV{UEICOMMON}/includes"
)

################################################################################
# Compile definitions
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
    "$<$<CONFIG:Debug>:"
        "_DEBUG;"
        "UEIDAQ_DEBUG"
    ">"
    "$<$<CONFIG:Release>:"
        "NDEBUG"
    ">"
    "WIN32;"
    "_WINDOWS;"
    "UEIDAQSTATIC;"
    "__MSWINDOWS__;"
    "_MBCS"
)
set_source_files_properties(ResourceParser.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(StdAfx.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;UEIDAQSTATIC"
)
set_source_files_properties(UeiChannel.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiChannelImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDaqCore.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDataStream.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDataStreamImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDevice.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDeviceEnumerator.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDeviceEnumeratorImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiDeviceImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiException.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiObject.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiObjectImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiSession.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiSessionGroup.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiSessionImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiTiming.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiTimingImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiTrigger.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)
set_source_files_properties(UeiTriggerImpl.cpp PROPERTIES
    COMPILE_DEFINITIONS_DEBUG "_DEBUG"
    COMPILE_DEFINITIONS_RELEASE "NDEBUG"
    COMPILE_DEFINITIONS "WIN32;_WINDOWS;_MBCS;_USRDLL;UEIDAQCORE_EXPORTS"
)

################################################################################
# Compile and link options
################################################################################
if(MSVC)
    target_compile_options(${PROJECT_NAME} PRIVATE
        $<$<CONFIG:Debug>:
            /Od;
            /RTC1;
            /MTd
        >
        $<$<CONFIG:Release>:
            /O2;
            /Ob1;
            /GF;
            /MT;
            /Gy
        >
        /W3;
        /nologo;
        /Zi;
        /GR;
        ${DEFAULT_CXX_EXCEPTION_HANDLING}
    )
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(ResourceParser.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(StdAfx.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiChannel.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiChannelImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDaqCore.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDataStream.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDataStreamImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDevice.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDeviceEnumerator.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDeviceEnumeratorImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiDeviceImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiException.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiObject.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiObjectImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiSession.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiSessionGroup.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiSessionImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiTiming.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiTimingImpl.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiTrigger.cpp ${FILE_CL_OPTIONS})
    string(CONCAT FILE_CL_OPTIONS
        "$<$<CONFIG:Debug>:"
            "/Od;/RTC1"
        ">"
        "$<$<CONFIG:Release>:"
            "/O2"
        ">"
    )
    source_file_compile_options(UeiTriggerImpl.cpp ${FILE_CL_OPTIONS})
endif()

################################################################################
# Post build events
################################################################################
add_custom_command_if(
    TARGET ${PROJECT_NAME}
    POST_BUILD
    COMMANDS
    COMMAND   $<CONFIG:Debug> if not exist ..\\..\\CPP\\lib mkdir ..\\..\\CPP\\lib
    COMMAND   $<CONFIG:Debug> copy $<SHELL_PATH:${OUTPUT_DIRECTORY}>UeiDaqvc15SD.lib ..\\..\\CPP\\lib
    COMMAND $<CONFIG:Release> if not exist ..\\..\\CPP\\lib mkdir ..\\..\\CPP\\lib
    COMMAND $<CONFIG:Release> copy $<SHELL_PATH:${OUTPUT_DIRECTORY}>UeiDaqvc15S.lib ..\\..\\CPP\\lib
)

################################################################################
# Dependencies
################################################################################
add_dependencies(${PROJECT_NAME}
    UeiPDNADriver_vc15
    UeiSimuDriver_vc15
)

# Link with other targets.
target_link_libraries(${PROJECT_NAME} PUBLIC
    UeiPDNADriver_vc15
    UeiSimuDriver_vc15
)

我对CMake还是很陌生,对于可能的解决方案的任何帮助将不胜感激。

编辑:这是直接从Visual Studio窗口复制的UeiDaqCore的后期构建事件。

copy "$(SolutionDir)\Output\$(Platform)\vs15_$(Configuration)\UeiDaqvc15D.dll" "$(SystemRoot)\System32"
if not exist ..\..\CPP\lib mkdir ..\..\CPP\lib
copy "$(SolutionDir)\Output\$(Platform)\vs15_$(Configuration)\UeiDaqvc15D.lib" ..\..\CPP\lib
九柱游戏

看来自POST_BUILD定义命令格式不正确。具体来说,该copy命令没有在定义的路径之间放置路径分隔符OUTPUT_DIRECTORY

C:\Work\SVN\Software\Framework\Source\UeiDaqCore\..\..\Output\Win32\vs15_Debug

从文件名:

UeiDaqvc15SD.lib

因此,他们(错误地)被串联:

C:\Work\SVN\Software\Framework\Source\UeiDaqCore\..\..\Output\Win32\vs15_DebugUeiDaqvc15SD.lib

尝试\\在自定义命令后添加路径分隔符$<SHELL_PATH:${OUTPUT_DIRECTORY}>

add_custom_command_if(
    TARGET ${PROJECT_NAME}
    POST_BUILD
    COMMANDS
    COMMAND   $<CONFIG:Debug> if not exist ..\\..\\CPP\\lib mkdir ..\\..\\CPP\\lib
    COMMAND   $<CONFIG:Debug> copy $<SHELL_PATH:${OUTPUT_DIRECTORY}>\\UeiDaqvc15SD.lib ..\\..\\CPP\\lib
    COMMAND $<CONFIG:Release> if not exist ..\\..\\CPP\\lib mkdir ..\\..\\CPP\\lib
    COMMAND $<CONFIG:Release> copy $<SHELL_PATH:${OUTPUT_DIRECTORY}>\\UeiDaqvc15S.lib ..\\..\\CPP\\lib
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用CMake构建zLib

来自分类Dev

使用 MinGW 4.9.2 构建 glew 2.0.0 时出现 Cmake 错误

来自分类Dev

使用CMake构建库时出错

来自分类Dev

使用Cmake构建asmJit示例

来自分类Dev

使用CMake问题构建OpenCV

来自分类Dev

使用CMake构建PubNub C ++

来自分类Dev

使用CMake构建C ++协议

来自分类Dev

如何使用CMake构建库

来自分类Dev

无法使用CMake构建STXXL

来自分类Dev

错误构建发布布局

来自分类Dev

使用cmake构建时,qtcreator忽略cmake选项

来自分类Dev

使用CMake时在Visual Studio中检测构建类型(调试/发布)

来自分类Dev

使用CMake为不同的构建类型创建构建树

来自分类Dev

使用CMake for Python 3构建SimpleITK

来自分类Dev

如何使用Sphinx构建CMake文档?

来自分类Dev

是否可以使用CMake构建Boost?

来自分类Dev

使用CMake在构建后运行C ++程序

来自分类Dev

使用CMake和MinGW构建PoDoFo库

来自分类Dev

使用cmake为vxworks构建OPCUA

来自分类Dev

如何使用cmake构建“文件副本” RPM?

来自分类Dev

如何使用Yocto(包括CMake)构建SDK?

来自分类Dev

使用cmake构建期间生成脚本

来自分类Dev

如何使用CMake构建Python扩展模块?

来自分类Dev

使用CMake for Python 3构建SimpleITK

来自分类Dev

如何使用Windows 7的cmake构建OpenEXR

来自分类Dev

在Windows中使用CMake构建POCO库

来自分类Dev

如何使用CMake构建DCMTK项目文件?

来自分类Dev

如何使用cmake构建“文件副本” RPM?

来自分类Dev

如何使用Yocto(包括CMake)构建SDK?