【发布时间】:2019-11-14 13:49:31
【问题描述】:
我的任务是将大型框架转换并构建为 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.lib 时出现。 CMake 给了我没有所有路径的错误列表,就在这里。
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.
我查看了名为 setlocal 的构建后事件的 Visual Studio UeiDaqCore 项目文件,还查看了 setlocal 构建后事件的 CmakeLists.txt 文件,但找不到。
从错误文本来看,它似乎正在寻找一个名为 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
【问题讨论】:
-
@squareskittles 是的,这两个文件都存在。 UeiDaqCore_vc15SD.lib 就在它正在查找的目录中。
标签: c++ cmake visual-studio-2017 post-build-event