Kaynağa Gözat

Tests: Fix ExportImport on AIX with GCC

The iface_test_bld gets the excludedFromAll include directory with
"-isystem" because it is added indirectly through an imported target.
On AIX with GCC the -isystem flag causes sources to be preprocessed as:

  # 3 "/.../excludedFromAll.h" 2 3 4

The flags after the file name are documented here:

  https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

and the "4" flag says that following content is extern "C".  This
causes the excludedFromAll function to be declared as a C symbol
and not mangled for C++, which fails to link later because the
symbol is really provided as C++.

Work around this by setting the NO_SYSTEM_FROM_IMPORTED target property
on iface_test_bld.  Somehow iface_test_exp does not end up with -isystem
so we do not need this workaround for that target.
Brad King 10 yıl önce
ebeveyn
işleme
4fc4742477
1 değiştirilmiş dosya ile 1 ekleme ve 0 silme
  1. 1 0
      Tests/ExportImport/Import/A/CMakeLists.txt

+ 1 - 0
Tests/ExportImport/Import/A/CMakeLists.txt

@@ -255,6 +255,7 @@ add_subdirectory(excludedFromAll)
 
 add_executable(iface_test_bld iface_test.cpp)
 target_link_libraries(iface_test_bld bld_testSharedLibDepends)
+set_property(TARGET iface_test_bld PROPERTY NO_SYSTEM_FROM_IMPORTED 1)
 
 set_property(TARGET bld_testSharedLibRequired APPEND PROPERTY
     LINK_INTERFACE_LIBRARIES