我的任务是将大型框架转换并构建为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.
我在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] 删除。
我来说两句