ক্যাটালিনা সি ++: <cmath> শিরোলেখ ব্যবহার করে ত্রুটি হয়: বিশ্বব্যাপী নেমস্পেসে 'সাইনব্যাট' নামে কোনও সদস্য নেই


16

মোজাভে থেকে ক্যাটালিনায় আপগ্রেড করার পরে, এনভিয়িতে সেটআপিং: / অ্যাপ্লিকেশনস / এক্সকোড.এপ / কনটেন্টস / ডেভেলপার / প্লাটফর্মস / ম্যাকোএসএক্স.প্ল্যাটফর্ম / ডেভেলপার / এসডিকে / ম্যাকোএসএক্স 10.15.sdk।

আমি এমন একটি প্রোগ্রাম সংকলন করতে অক্ষম যা <cmath>হেডার ব্যবহার করে ।

আমি সিএফএলএগএস, সিসিএফএলএগএস, সিএক্সএক্সএফএলএগএসকে ম্যাকোএসডিডি অবস্থানের দিকে চিহ্নিত করার চেষ্টা করেছি যা কিছুই পরিবর্তন করে না

Scanning dependencies of target OgreMain
/Applications/Xcode.app/Contents/Developer/usr/bin/make -f OgreMain/CMakeFiles/OgreMain.dir/build.make OgreMain/CMakeFiles/OgreMain.dir/build
[  0%] Building CXX object OgreMain/CMakeFiles/OgreMain.dir/src/OgreASTCCodec.cpp.o
cd /Users/roman/Downloads/ogre-1.12.2/build/OgreMain && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -DOgreMain_EXPORTS -D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0 -I/Users/roman/Downloads/ogre-1.12.2/OgreMain/src/OSX -I/Users/roman/Downloads/ogre-1.12.2/OgreMain/include/Threading -I/Users/roman/Downloads/ogre-1.12.2/OgreMain/src -I/Users/roman/Downloads/ogre-1.12.2/build/Dependencies/include -I/Users/roman/Downloads/ogre-1.12.2/OgreMain/include -I/Users/roman/Downloads/ogre-1.12.2/build/include -I/Users/roman/Downloads/ogre-1.12.2/OgreMain -isystem /usr/local/include  -Wall -Winit-self -Wcast-qual -Wwrite-strings -Wextra -Wundef -Wmissing-declarations -Wno-unused-parameter -Wshadow -Wno-missing-field-initializers -Wno-long-long -Wno-inconsistent-missing-override  -msse -O3 -DNDEBUG -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -fPIC -fvisibility=hidden -fvisibility-inlines-hidden   -std=c++11 -o CMakeFiles/OgreMain.dir/src/OgreASTCCodec.cpp.o -c /Users/roman/Downloads/ogre-1.12.2/OgreMain/src/OgreASTCCodec.cpp
In file included from /Users/roman/Downloads/ogre-1.12.2/OgreMain/src/OgreASTCCodec.cpp:29:
In file included from /Users/roman/Downloads/ogre-1.12.2/OgreMain/src/OgreStableHeaders.h:40:
In file included from /Users/roman/Downloads/ogre-1.12.2/OgreMain/include/OgrePrerequisites.h:309:
In file included from /Users/roman/Downloads/ogre-1.12.2/OgreMain/include/OgreStdHeaders.h:10:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:314:9: error: no member named 'signbit' in the global namespace
using ::signbit;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:315:9: error: no member named 'fpclassify' in the global namespace
using ::fpclassify;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:316:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
using ::isfinite;

উদাহরণস্বরূপ ম্যাক্রো: islessবিশ্বব্যাপী নেমস্পেসে এবং আমার কম্পিউটারে উপস্থিত রয়েছে:

 cat math.h | grep "isless"

#define isless(x, y) __builtin_isless((x),(y))
#define islessequal(x, y) __builtin_islessequal((x),(y))
#define islessgreater(x, y) __builtin_islessgreater((x),(y))
  pwd
/usr/local/include

এমনকি cmath শিরোনাম এটি অন্তর্ভুক্ত:

 cat /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath | grep "math.h"
#include <math.h>

এবং আমার কমান্ড লাইন বিকল্প আছে -isystem /usr/local/include

এই কাজ করা উচিত...


নেই xcode-select -pম্যাচে যেখানে Xcode অবস্থিত? আপনি কি using std::signbit;অন্যদের জন্যও কোডটি পরিবর্তন করতে পারবেন ? আপনি কি সি ++ 11 বা তার পরে সংকলন করছেন?
এলজয়

সি ++ ১১ হিসাবে সংকলন করে আমি কোডটি পরিবর্তন করতে পারি না, এটি বাহ্যিক নির্ভরতা! হ্যাঁ xcode-select -pযেখানে XCodeঅবস্থিত মেলে ।
রোমান জাস্টারগবাউম 30:53

এটা ভালো না. কোডটি করার চেষ্টা করছে using ::signbit;এবং চিহ্নটি বিশ্বব্যাপী নেমস্পেসে নেই, এটি std::নেমস্পেসে রয়েছে। আমি অন্যদের সাথে একইভাবে অনুমান করি (আমি তাদের তাড়া করি নি)।
এলজয়

উত্তর:


7

আমি কৌতূহলী: আপনি কোন সংকলক ব্যবহার করছেন? এর মান কী CMAKE_OSX_SYSROOT?

আমি মোটামুটি নিশ্চিত এটি একটি ভুল ফলাফল CMAKE_OSX_SYSROOT। ক্ল্যাংয়ের জন্য পাইথন বাইন্ডিংগুলি ব্যবহার করার সময় আপনি যে সমস্যাটি বর্ণনা করছেন তা ছিল (যেখানে সিএমক কম্পাইলার কল পরিচালনা করে না) তবে আমি সিএমকেতে ত্রুটিটি পুনরায় তৈরি করতে পেরেছি:

set(CMAKE_OSX_SYSROOT "")  # Reset.

আমি এই প্রশ্নের উত্তর অনুসরণ করে আমার সমস্যার সমাধান করেছি: ম্যাকোস ক্যাটালিনা আপডেট করার পরে সি পিসি কোড সহ আর প্যাকেজগুলি সংকলন করতে পারছি না

সংক্ষিপ্তসার হিসাবে: ক্যাটালিনাতে, /usr/includeএসআইপি দ্বারা শুদ্ধ এবং সুরক্ষিত হয়। সুতরাং, যে প্রকল্পটি সি শিরোনামগুলি সেখানে পাওয়া যাবে বলে আশা করে তা সংকলন করতে ব্যর্থ হবে। যদি আমি সঠিকভাবে মনে রাখি, অ্যাপল সি-শিরোনামগুলির প্রত্যাশা করে এমন প্রকল্পগুলিতে বাগ রিপোর্ট ফাইল করার পরামর্শ দেয় /usr/include

আপনি যে কোডটির ডান শিরোনামগুলি সংকলনের চেষ্টা করছেন তার বিল্ড সিস্টেমটি অবশ্যই আপনাকে নির্দেশ করতে হবে:

(1) নিশ্চিত করুন যে এক্সকোড আপ-টু ডেট রয়েছে। ক্যাটালিনাতে পুরানো এক্সকোড আপনার বিল্ডিং পরিবেশের জন্য কী করতে পারে তা বলার অপেক্ষা রাখে না।

(২) -isysroot /sdk/pathসংকলক পতাকা ব্যবহার করুন , /sdk/pathফলাফলটি কোথায় xcrun --show-sdk-path। আমি নিশ্চিত না যে সিএমকের সেরা অনুশীলনটি কী, তবে করার চেষ্টা করুন

set(CMAKE_OSX_SYSROOT /sdk/path)

অথবা

set(CMAKE_CXX_FLAGS "[...] -isysroot /sdk/path")

যদি এটি সমস্যার সমাধান করে তবে আপনি সিএমকেकात এটি করার আরও ভাল উপায়ের সন্ধান করতে পারেন।

অবশ্যই, আপনি যদি সাহসী হন তবে আপনি এসআইপি নিষ্ক্রিয় করতে পারতেন, আমার প্রশ্নের উত্তরে প্রস্তাবিত: / ইউএসআর / ম্যাকওএস ক্যাটালিনায় নিখোঁজ থাকা (এক্সকোড 11 সহ)


1
set(CMAKE_OSX_SYSROOT ...)CMakeLists.txtshellুকে যায় , খোল নয়।
এমকেএল

6

আইওএস (আমার ম্যাকবুক এয়ার এবং গিটহাব অ্যাকশন চালক উভয়) উভয়কে লক্ষ্য করার চেষ্টা করার সময় আমার একই সমস্যা হচ্ছে এবং আমি সঠিক সমাধানের পরামর্শ দেওয়ার জন্য অ্যাপলের বাস্তুতন্ত্রের সাথে যথেষ্ট পরিচিত না হলেও এই সমস্যা সম্পর্কে আরও কয়েকটি চিন্তাভাবনা রয়েছে। আসল কমান্ড লাইন সিপিস্পেস্কে সিএমকে থেকে আসছিল, তবে একবার আমি এটি প্রয়োজনীয় জিনিসগুলিতে সিদ্ধ করে ফেলি, এখানে একটি সংক্ষিপ্ত তিরস্কার।

  1. এতে cmath-bug.cppএকমাত্র লাইন দিয়ে ফাইল তৈরি করুন :
    #include <cmath>
  1. চালান (কিছু যুক্তির সামনে নিউলাইনগুলি পড়ার সুবিধার জন্য, সেগুলি সরিয়ে দিন)
clang -v -x c++ -target arm64-apple-ios13.2 -fcolor-diagnostics -std=c++11 -stdlib=libc++ 
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk 
-isystem  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include
-c cmath-bug.cpp

আমি যখন এটি চালনা করি, তখন একই সমস্যাটির মুখোমুখি অনেকের সাথে আমি পরিচিত হই:

Apple clang version 11.0.0 (clang-1100.0.33.16)
Target: arm64-apple-ios13.2
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-ios13.2.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name cmath-bug.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=13.2 -target-cpu cyclone -target-feature +fp-armv8 -target-feature +neon -target-feature +crypto -target-feature +zcm -target-feature +zcz -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -dwarf-column-info -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 530 -v -coverage-notes-file /Users/myuser/Projects/C++/cmath-bug.gcno -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk -isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-extra-semi-stmt -Wno-quoted-include-in-framework-header -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/myuser/Projects/C++ -ferror-limit 19 -fmessage-length 204 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=ios-13.2.0 -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o cmath-bug.o -x c++ cmath-bug.cpp
clang -cc1 version 11.0.0 (clang-1100.0.33.16) default target x86_64-apple-darwin19.0.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/c++/v1"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/Library/Frameworks"
ignoring duplicate directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/System/Library/Frameworks (framework directory)
End of search list.
In file included from cmath-bug.cpp:1:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:318:9: error: no member named 'signbit' in the global namespace
using ::signbit;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:319:9: error: no member named 'fpclassify' in the global namespace
using ::fpclassify;
      ~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath:320:9: error: no member named 'isfinite' in the global namespace; did you mean 'finite'?
using ::isfinite;
      ~~^

কেবলমাত্র 2 টিতে আমি আমার মূল কমান্ড লাইনে যে ডিরেক্টরিগুলি দিয়েছি তা অন্তর্ভুক্ত রয়েছে এবং সেগুলি:

$ ls -alF /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk
lrwxr-xr-x  1 root  wheel    12B Dec 17 11:54 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk@ -> iPhoneOS.sdk
$ ls -alF /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include
total 2160
drwxr-xr-x  169 root  wheel   5.3K Dec 17 12:07 ./
drwxr-xr-x    5 root  wheel   160B Nov  4 19:22 ../
 ...
-rw-r--r--    9 root  wheel    32K Nov  4 19:52 math.h
 ...

তবে এখানে আকর্ষণীয় বিটগুলি হ'ল অ-বিদ্যমান অন্তর্ভুক্ত ডিরেক্টরিগুলি পাশাপাশি এটি অন্তর্ভুক্ত ডিরেক্টরিগুলি অন্তর্ভুক্ত রয়েছে এবং শেষ পর্যন্ত তাদের ক্রম অনুসন্ধান করে। আমার ধারণা হ'ল কমান্ড লাইনে উল্লিখিত অতিরিক্ত ডিরেক্টরিগুলি কিছু অ্যাপল-নির্দিষ্ট যুক্তির ভিত্তিতে অ্যাপল ক্ল্যাংয়ের ড্রাইভার inোকানো হয়।

আপনি <cmath>শিরোনামটি পাওয়া গেছে বলে রিপোর্ট করা ত্রুটি থেকে দেখতে পারেন : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmathএবং এর 304 লাইনে আপনি দেখতে পারেন:

#include <__config>      // Line 304
#include <math.h>        // This one ends up causing troubles
#include <__cxx_version>

একই ফোল্ডারে /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/এমন একটি ফাইল রয়েছে math.hযা প্রয়োজনীয় সংজ্ঞা প্রদান করে তা বিচার করে:

#include <__config>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

#include_next <math.h>

#ifdef __cplusplus

// We support including .h headers inside 'extern "C"' contexts, so switch
// back to C++ linkage before including these C++ headers.
extern "C++" {

#include <type_traits>
#include <limits>

// signbit

#ifdef signbit

template <class _A1>
_LIBCPP_INLINE_VISIBILITY
bool
__libcpp_signbit(_A1 __lcpp_x) _NOEXCEPT
{
    return signbit(__lcpp_x);
}

#undef signbit

template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
typename std::enable_if<std::is_floating_point<_A1>::value, bool>::type
signbit(_A1 __lcpp_x) _NOEXCEPT
{
    return __libcpp_signbit((typename std::__promote<_A1>::type)__lcpp_x);
}

...

#elif defined(_LIBCPP_MSVCRT)
...
#endif  // signbit

লেখকরা <cmath>প্রত্যাশা করেছিলেন math.hযে একই ফোল্ডারটি প্রথমে অন্তর্ভুক্ত করা হবে এবং তারপরে #include_next <math.h>নির্দেশটি সিস্টেম-নির্দিষ্ট সন্ধান করুন math.h। বাস্তবে যা ঘটছে তা তা নয়।

আপনি যদি অনুসন্ধানের ডিরেক্টরিতে প্রথম 2 টি এন্ট্রি দেখেন:

#include <...> search starts here:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1

আপনি দেখতে পাচ্ছেন যে সিস্টেম-নির্দিষ্ট অন্তর্ভুক্ত ডিরেক্টরিটি ক্ল্যাং-ইনজেকশনের স্ট্যান্ডার্ড লাইব্রেরি ডিরেক্টরি থেকে উপরে চলে আসে, যার কারণে সিস্টেম-সুনির্দিষ্ট সন্ধান math.hকরা হচ্ছে, অন্যান্য স্ট্যান্ডার্ড লাইব্রেরির শিরোনামের মতো একই ফোল্ডারে নেই। সম্ভবত এটি ঘটবে কারণ যদি আমি স্পষ্টভাবে আমার কমান্ড লাইনে স্ট্যান্ডার্ড লাইব্রেরি যুক্ত করি তবে অন্য দুটি ডিরেক্টরি আগে -isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1সমস্যাটি চলে যায় এবং আমি ফাইলটি সংকলন করতে সক্ষম হয়েছি। এটি ক্ল্যাংয়ের ড্রাইভার বা অন্য যে কোনও কিছু এখানে জড়িত তা স্বয়ংক্রিয়ভাবে করে না: এটি সেই স্ট্যান্ডার্ড লাইব্রেরি ডিরেক্টরিটি যুক্ত করে -internal-system(নিশ্চিত হয় না যে অভ্যন্তরীণ পতাকাটির শব্দার্থক শব্দগুলি কী) এবং এটি সিস্টেম ডিরেক্টরি পরে এটি যুক্ত করে।

এখন আপনি যদি অবহেলিত ডিরেক্টরিগুলির তালিকাটি দেখুন তবে সেই তালিকার প্রথম প্রবেশটি হ'ল:

ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/c++/v1"

যার মধ্যে পিছনে থাকা c++/v1অংশটি আমার মেশিনে বিদ্যমান নেই, তা আমাকে অবাক করে দিয়েছিল যে আইফোন এসডিকে ইনস্টলেশনটি পুরো জিনিসটি কাজ করতে ডিরেক্টরিতে c++নির্দেশ করার পথে বিদ্যমান অংশের ভিতরে একটি প্রতীকী লিঙ্ক তৈরি করার কথা ছিল কিনা /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++

যাইহোক, আমি যা মনে করি এটি ঘটছে এবং আমি অবাক হয়েছি যে কেউ কীভাবে সঠিকভাবে এটি ঠিক করতে জানেন?

ধন্যবাদ!

প্রসঙ্গে পিএস:

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ xcrun --show-sdk-path -sdk iphoneos13.2
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk

1

আপনার এক্সকোডের অনুলিপিটি দূষিত হওয়া সম্ভব। কোডসাইন দিয়ে চেক করুন:

codesign --verify /Applications/Xcode.app

এটি আমার সাথে ঘটেছিল এবং সমস্যাটি Xcode দূষিত হয়েছিল। পুনরায় ইনস্টল করা এটি স্থির করে।

কিছু নিম্নলিখিত পরিবর্তন করেছে:

file added: /Applications/Xcode-11.3.1-.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/json/__pycache__/scanner.cpython-37.pyc
file added: /Applications/Xcode-11.3.1-.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/json/__pycache__/decoder.cpython-37.pyc
file added: /Applications/Xcode-11.3.1-.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/json/__pycache__/encoder.cpython-37.pyc
file added: /Applications/Xcode-11.3.1-.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/json/__pycache__/__init__.cpython-37.pyc
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include/math.h
file modified: /Applications/Xcode-11.3.1-.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/math.h

math.h উপরের সমস্ত জায়গায় খালি ছিল।


1

@ সলডনের বিশ্লেষণ স্পটে রয়েছে। সমস্যা সম্ভবত যেcmath ফাইলটি math.hশিরোনাম ফাইলগুলির অনুসন্ধানের ক্রমের ভিত্তিতে ভুল সংস্করণ সহ অন্তর্ভুক্ত করছে । কমপক্ষে, যখন আমি একই ত্রুটি পেয়েছিলাম তখন এটাই আমার ঘটেছিল।

এর জন্য আপনার সংকলক আউটপুট স্ক্যান করুন #include <...> search starts here:। আপনি কমান্ড লাইন থেকে (উত্স) দিয়ে এই আউটপুটটি জোর করতে পারেন :

gcc -Wp,-v -E -

এটি দেখতে কিছু দেখতে হবে:

 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)

লক্ষ্য করুন যে পথগুলি Toolchainsতাদের সাথে আগে এসেছিলPlatforms । যদি আপনার ক্ষেত্রে অর্ডারটি বিপরীত হয় তবে আপনার কনফিগারেশনে কী কারণে এটি ঘটছে তা আপনাকে খুঁজে বের করতে হবে। আমার জন্য, এটি CPLUS_INCLUDE_PATHআমার লগইন স্ক্রিপ্টের একটি সুস্পষ্ট সেটিংস ছিল ।

অফারিং কোড:

XCBASE=`xcrun --show-sdk-path`
export CPLUS_INCLUDE_PATH=$XCBASE/usr/include

এটি এক্সকোড ১১ এর আশেপাশে কাজ করার আমার প্রচেষ্টার অংশ ছিল আর এসডিকে শিরোলেখ ফাইলগুলির জন্য ইনস্টলেশন প্যাকেজ সরবরাহ করে না। এই কোডটি সরানোর পরে, আমি সফলভাবে অন্তর্ভুক্ত করতে সক্ষম হয়েছিcmath আমার সি ++ কোডটিতে হয়েছি।

আপনি যদি এখানে এই সমস্যার সমাধান অনুসন্ধান করতে এসেছেন তবে আপনার অন্যরকম সমাধানের প্রয়োজন হতে পারে তবে আশা করা যায় এটি এই সমস্যার মূল কারণ বলে মনে হচ্ছে, শিরোনাম ফাইল অনুসন্ধানের পথের ক্রমটি সম্পর্কে আলোকপাত করতে সহায়তা করে।


1

কমান্ডটি ব্যবহার করে:

gcc -Wp,-v -E -

আমার # অন্তর্ভুক্ত <...> অনুসন্ধানের ক্রম:

 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)

# অন্তর্ভুক্ত ত্রুটির কারণ নীচে বর্ণিত:

 - #include<cmath> resides in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
 - It includes <math.h>.
 - It searches /usr/local/include directory as this is the first directory to search. There is a math.h in "/usr/local/include/c++/9.3.0/" directory
 - It tries to use this.
 - But expectation was to use the math.h of the same directory /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
 - The math.h of /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 include math.h of /usr/local/include using #include_next<math.h>
 - As wrong math.h is included/linked with /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath, the compilation error happens

ঠিক করা:

    1. If we can alter the search order of #include<...> to search /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 at first, it can be fixed.
    2. Using #include</Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/math.h> instead of <math.h> in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath

আমি # 2 বিকল্পটি অনুসরণ করেছি এবং বিল্ড এখন সফল!

এবং বিস্তারিত উত্তরের জন্য একাকী ধন্যবাদ । আমি ইস্যুটি ঠিক করতে উত্তর অনুসরণ করেছি followed


হাই নিলয় দত্ত! আমি আপনাকে এই উত্তরটি থেকে উত্তর সরিয়ে এই উত্তরটি সম্পাদনা করার পরামর্শ দিচ্ছি এবং কেবলমাত্র উত্তরগুলি অন্তর্ভুক্ত করবে। আপনার যদি প্রশ্ন থাকে তবে সঠিকভাবে আলাদাভাবে জিজ্ঞাসা করুন এই সম্প্রদায়টিতে প্রশ্ন জিজ্ঞাসা করা উচিত।
টিয়াগো মার্টিনস পেরেস

1
টিয়াগোমার্টিনস পিয়ারস @, এটি সরিয়ে ফেলেছে। ধন্যবাদ।
নিলয় দত্ত

0

আমি দেখতে পেয়েছি যে আমার প্রকল্পের ভিতরে আমার কাছে ফাইল আছে math.h। নাম পরিবর্তন করার পরে সমস্যাটি অদৃশ্য হয়ে গেল। Seams cmathসিস্টেমের পরিবর্তে আমার ফাইল অন্তর্ভুক্ত করে।


0

সম্প্রতি 10.15.4 এবং এক্সকোড 11.4 এ আপগ্রেড করার পরে জিআরপিসি সংকলনের চেষ্টা করার সময় আমি এই ত্রুটিটি পেয়েছি এবং আমি প্রদত্ত সমস্ত সমাধানগুলি সন্ধান করতে শুরু করেছি (এখানে এবং ক্যাটালিনা 10.15 এ আপগ্রেড করার পরে ম্যাকের উপর সি প্রোগ্রাম সংকলন করতে পারছি না ) , এবং তাদের কয়েকটিকে চেষ্টা করেছিলেন (যদিও এটি পুনরায় /usr/includeতৈরি করার চেষ্টা না করায় এটি অ্যাপল যে বিচ্ছিন্নতা তৈরির চেষ্টা করেছিল তা লঙ্ঘন করবে) - কিছুই কাজ করছে বলে মনে হয়নি।

আমি তখন প্রকৃত সংস্থাকারীর অনুরোধগুলি নিবিড়ভাবে দেখেছিলাম যে makeপ্রক্রিয়াটি উত্পাদন করছে এবং লক্ষ্য করেছি যে এখানে একটি স্পষ্ট ছিল

-I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include

যা পরিণামে ভুল ক্রমে সংঘটিত হতে পারে - এই স্পষ্টত অন্তর্ভুক্ত পাথটি সরিয়ে ক্যাটালিনা, এক্সকোড এবং এক্সকোড কমান্ড-লাইন সরঞ্জামগুলির একটি ডিফল্ট ইনস্টল সহ সংকলনটি সফল হতে দেয়, যেমনটি আপনি আশা করবেন, অন্য কোনও কৌশল / সংকলক পতাকা নেই প্রয়োজন ছিল।


আমিও এই ইস্যুতে দৌড়েছি। দেখা যাচ্ছে যে pkg-configহোমব্রিউ থেকে কিছু ফাইল (যেমন libcurl) এই পাথটি স্বয়ংক্রিয়ভাবে যুক্ত করে, এমনকি আপনি এক্সকোড ইনস্টল করা থাকলেও। এটি হোমব্রু 2.2.13 এ স্থির করা হয়েছিল। Github.com/Homebrew/brew/issues/5068 এ আরও বিশদ ; PR এটি ঠিক করে দেয় এটি github.com/Homebrew/brew/pull/7331 এ রয়েছে । টিএল; ডিআর:
হোমব্রিউ

হ্যাঁ এটি জিলিবের জন্য একটি পুরাতন হোমব্রিজি pkg_config ছিল যা এখনও কোনওভাবে শুয়ে ছিল, এটি আমার জন্য
ঘটছিল

0

আপনি XCode.app SDK এর চেয়ে কমান্ডলাইনটুল এসডিকে ব্যবহার করার চেষ্টা করতে পারেন।

আমি পয়েন্টক্লাউডলাইবারি (পিসিএল) সংকলন করার সময় এই সমস্যাটি সমাধান করি

#Check the current sdk
xcrun --show-sdk-path

#Change sdk
sudo xcode-select -s /Library/Developer/CommandLineTools          #Using CommandLineTools SDK
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer   #Using XCode.app SDK

এছাড়াও, এক্সকোড.অ্যাপ এবং কমান্ডলাইনটুলগুলি পুনরায় ইনস্টল করতে সহায়তা করতে পারে।


0

সংক্ষিপ্তসার: আমার ক্ষেত্রে, বিল্ড স্ক্রিপ্টটি ios-cmakeসরঞ্জামচেইনের একটি পুরানো সংস্করণ ব্যবহার করেছে (২.১.২), এবং এটি ৩.১.২ এ আপডেট করে সিএমএথ / গণিতের বিষয়টি অন্তর্ভুক্ত করা হয়েছে।

gcc -Wp,-v -E -আমার মামলার জন্য @ রায়ান এইচ দ্বারা প্রস্তাবিত নিফটি কমান্ডটি মানিয়ে নেওয়া ( ঝাঁকুনি , সি ++, আইওস টার্গেট)

clang -x c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk -Wp, -v -E -

কুমারী এক সহ দুটি ক্যাটালিনাতে ফলন যেখানে কেবলমাত্র ইনস্টল হওয়া সরঞ্জামটি এক্সকোড 11.14.1:

 clang -cc1 version 11.0.3 (clang-1103.0.32.59) default target x86_64-apple-darwin19.4.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/usr/include/c++/v1"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.3/include
 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/System/Library/Frameworks (framework directory)
End of search list.

সুতরাং সঠিক অন্তর্ভুক্ত পাথটি হ'ল প্রথম অ-উপেক্ষা করা, সবকিছু ঠিকঠাক কাজ করা উচিত, তবে এটি হয়নি। এটি আইওস-কমেক সরঞ্জামচেইনের সংকলন কলে সংযুক্ত একটি অতিরিক্ত অন্তর্ভুক্ত কমান্ড থেকে এসেছে বলে মনে হচ্ছে:

CompileC /Users/<...>/build.Release.ios/<...>.o <...>.cpp normal arm64 c++ com.apple.compilers.llvm.clang.1_0.compiler
-Isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk <...>
 -I/Users/<...>/Build_iOS/build.Release.ios/build.arm/Binaries/Release/include
 -Isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.4.sdk/usr/include
 -I/Users/<...>/Build_iOS/build.Release.ios/build.arm/src/<...>.build/Release-iphoneos/<...>/DerivedSources/arm64
...

অপরাধীটি -Isystem ...লাইন ছিল , যার #include <math>ফলে সিএমথ ফাইলের লাইনটি ভুল ফাইলটি লোড করে end চুম্বক স্ক্রিপ্টগুলি ঠিক করার চেষ্টা করার পরে প্রচুর ঝাঁকুনির পরে, আমি আইওএস-সিমেকের পুরানো সংস্করণটি লক্ষ্য করেছি এবং আপডেট করার সাথে অযাচিত -Isystemলাইন অপসারণের 'একমাত্র' প্রভাব ছিল - বাকি সমস্ত কিছুই প্রায় একই ছিল (কয়েকটি সংকলক বিকল্প বাদে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.