0

当我使用 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 构建的解决方案添加非 unicode 测试或其他内容。

我确实add_definitions(-DUNICODE -D_UNICODE)在父 CMake 文件中进行了设置。

更令人困惑的是,它构建在我的本地系统(以及所有非 MSVC 编译器)上,而不是在我们的 CI 构建系统上(......重要的地方。),即使环境是相同的。

4

0 回答 0