Ошибка MSB8031, вызванная решением Visual Studio 2013, созданным CMake с использованием ExternalData

Когда я добавляю тестовую цель с помощью 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 (... где это имеет значение), хотя среды одинаковы.


person Matt    schedule 14.11.2016    source источник
comment
Вы установили пакет MBCS MFC? См. здесь: stackoverflow.com/questions/19603680/   -  person Simon Kraemer    schedule 14.11.2016
comment
Я видел этот ответ, и я не уверен на 100%, что он установлен (мы действительно установили обновление 5). Но у меня есть родственный проект, который использует практически ту же самую настройку, которая отлично строится (буквально прямо над ней в выводе консоли log) на той же машине. Поэтому я бы беспокоился об изменении Visual Studio на нашей машине CI.   -  person Matt    schedule 14.11.2016