facebookincubator / FBX2glTF

A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.
Other
2.07k stars 330 forks source link

Switching from Release to Debug target in Visual Studio breaks the build process #98

Open robertlong opened 6 years ago

robertlong commented 6 years ago

I've been working on improving FBX2glTF on Windows and building both the Debug and Release target. For some reason whenever I build the Release target and then try to build Debug, the build fails with the following errors:

1>------ Build started: Project: CPPCodec, Configuration: Debug x64 ------
2>------ Build started: Project: CxxOpts, Configuration: Debug x64 ------
3>------ Build started: Project: Draco, Configuration: Debug x64 ------
4>------ Build started: Project: FiFoMap, Configuration: Debug x64 ------
5>------ Build started: Project: Fmt, Configuration: Debug x64 ------
6>------ Build started: Project: Json, Configuration: Debug x64 ------
7>------ Build started: Project: MathFu, Configuration: Debug x64 ------
8>------ Build started: Project: STB, Configuration: Debug x64 ------
1>Performing update step for 'CPPCodec'
2>Performing update step for 'CxxOpts'
3>Performing update step for 'Draco'
4>Performing update step for 'FiFoMap'
5>Performing update step for 'Fmt'
6>Performing update step for 'Json'
7>Performing update step for 'MathFu'
8>Performing update step for 'STB'
1>Current branch master is up to date.
4>Current branch master is up to date.
8>Current branch master is up to date.
9>------ Build started: Project: FBX2glTF, Configuration: Debug x64 ------
9>dracoenc.lib(draco_types.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(draco_types.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(geometry_attribute.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(geometry_attribute.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(encoder_buffer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(encoder_buffer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(point_attribute.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(point_attribute.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(encode.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(encode.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(data_buffer.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(data_buffer.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(options.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(options.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(expert_encode.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(expert_encode.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_edgebreaker_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_edgebreaker_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_sequential_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_sequential_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_kd_tree_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_kd_tree_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_sequential_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(point_cloud_sequential_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(metadata_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(metadata_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(rans_bit_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(rans_bit_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_edgebreaker_encoder_impl.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_edgebreaker_encoder_impl.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(sequential_attribute_encoders_controller.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(sequential_attribute_encoders_controller.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(symbol_encoding.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(symbol_encoding.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(kd_tree_attributes_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(kd_tree_attributes_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(divide.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(divide.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(corner_table.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(corner_table.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_attribute_corner_table.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_attribute_corner_table.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(mesh_misc_functions.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(mesh_misc_functions.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(attributes_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(attributes_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(sequential_attribute_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(sequential_attribute_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(attribute_octahedron_transform.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(attribute_octahedron_transform.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(prediction_scheme_encoder_factory.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(prediction_scheme_encoder_factory.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(sequential_integer_attribute_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(sequential_integer_attribute_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(sequential_normal_attribute_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(sequential_normal_attribute_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(sequential_quantization_attribute_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(sequential_quantization_attribute_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(shannon_entropy.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(shannon_entropy.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(direct_bit_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(direct_bit_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(quantization_utils.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(quantization_utils.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(float_points_tree_encoder.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(float_points_tree_encoder.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(attribute_transform.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(attribute_transform.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(symbol_coding_utils.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(symbol_coding_utils.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>dracoenc.lib(attribute_quantization_transform.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>dracoenc.lib(attribute_quantization_transform.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>fmt.lib(format.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>fmt.lib(format.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>fmt.lib(printf.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in Fbx2Raw.obj
9>fmt.lib(printf.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in Fbx2Raw.obj
9>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
9>C:\Users\robertlong\workspace\FBX2glTF\build\Debug\FBX2glTF.exe : fatal error LNK1319: 84 mismatches detected
9>Done building project "FBX2glTF.vcxproj" -- FAILED.
10>------ Skipped Build: Project: INSTALL, Configuration: Debug x64 ------
10>Project not selected to build for this solution configuration 
========== Build: 8 succeeded, 1 failed, 2 up-to-date, 1 skipped ==========

To get around this I've been wiping the build/ directory and regenerating the project via cmake:

rm -rf build\
cmake -Bbuild -H. -G"Visual Studio 15 2017 Win64"

I'm a cmake noob, it would be helpful to include some better documentation on how to get setup on Windows.

zellski commented 6 years ago

Interesting. I'm not sure if this is a weakness in the Draco CMake setup, or if I'm doing something wrong (or I guess some third option is possible where we're neither of us to blame). I'll play with it at home on the Windows box -- thank you!

zellski commented 5 years ago

Reminder to self to test this against the new 2019.2 release of the SDK, which actually targets the right Visual Studio runtime.