Когда я добавляю тестовую цель с помощью CMake ExternalData
, т.е.
include(ExternalData)
set(ExternalData_URL_TEMPLATES "http://ntctestdata/SoftwareTestData/AutomatedTests/%(algo)/%(hash)")
ExternalData_Add_Test(it_SdfFullData
NAME it_SdfFull
COMMAND it_SdfFull
)
ExternalData_Add_Target(it_SdfFullData)
Visual Studio 2013 (MSVC 12) выдает эту ошибку сборки:
Build FAILED.
"c:\...\build_dir\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\...\build_dir\...\test\it_Full\it_SdfFullData.vcxproj" (default target) (218) ->
(PrepareForBuild target) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(376,5): error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. [C:\...\build_dir\...\test\it_Full\it_SdfFullData.vcxproj]
Мне потребовалось много времени, чтобы сузить круг до этого. Я в замешательстве, потому что я делаю практически то же самое в другом файле CMake в родственном проекте, плюс фактические тестовые сборки. Кажется, что ExternalData_Add_Test
добавляет тест, отличный от юникода, или что-то в решение, созданное CMake.
У меня есть add_definitions(-DUNICODE -D_UNICODE)
, установленный в родительском файле CMake.
Что еще более сбивает с толку, так это то, что это строится на моей локальной системе (а также на всех компиляторах, отличных от MSVC), но не на наших системах сборки CI (... где это имеет значение), хотя среды одинаковы.