CMake இன் போது ஏற்படும் பொதுவான பாதை நீளப் பிழைகள் ரியாக் நேட்டிவ் முறையில் உருவாக்கப்படும்
விண்டோஸில் ரியாக்ட் நேட்டிவ் உடன் பணிபுரியும் டெவலப்பர்கள் ஆண்ட்ராய்டு திட்டங்களை உருவாக்கும்போது பாதை நீள வரம்புகளை அடிக்கடி சந்திக்கின்றனர். ஒரு தொடர்ச்சியான சிக்கல் தொடர்புடையது எதிர்வினை-சொந்த-புத்துயிர்ப்பு தொகுப்பு மற்றும் அதன் CMake உள்ளமைவு, இது தோல்வியடைந்த உருவாக்கங்களுக்கு வழிவகுக்கும்.
இந்த பிழை பொதுவாக ஒரு செய்தியால் குறிக்கப்படுகிறது "mkdir: அத்தகைய கோப்பு அல்லது அடைவு இல்லை", விண்டோஸ் ஆப்பரேட்டிங் சிஸ்டத்தில் அனுமதிக்கப்பட்ட பாதை நீளத்தை விட சில கோப்பகங்கள் உருவாக்கப்படுவதைக் குறிக்கிறது. டெவலப்பர்கள் தங்கள் பயன்பாடுகளைப் பயன்படுத்தி உருவாக்க முயற்சிக்கும்போது இது குறிப்பாக வெறுப்பாக இருக்கும் CMake மற்றும் தி நிஞ்ஜா அமைப்பு உருவாக்க.
ப்ராஜெக்ட்டை டிரைவின் ரூட்டிற்கு நெருக்கமாக மாற்றுவது அல்லது கட்டமைப்பை மாற்றுவது போன்ற முயற்சிகள் இருந்தாலும், இந்தப் பாதை நீளச் சிக்கல்கள் தொடர்ந்து இருக்கலாம். இத்தகைய நடவடிக்கைகள் சில சந்தர்ப்பங்களில் உதவக்கூடும் ஆனால் எப்போதும் நிரந்தர தீர்வை வழங்காது.
பணிபுரியும் போது நீங்கள் இந்த சிக்கலை எதிர்கொண்டால் எதிர்வினை-சொந்த-புத்துயிர்ப்பு, காரணத்தைப் புரிந்துகொள்வது மற்றும் மாற்று தீர்வுகளை ஆராய்வது முக்கியம். சிக்கல், சாத்தியமான தீர்வுகள் மற்றும் எதிர்காலத்தில் இந்த சிக்கலைத் தவிர்ப்பதற்கான வழிகளில் மூழ்குவோம்.
| கட்டளை | பயன்பாட்டின் உதாரணம் |
|---|---|
| cp -r | கோப்பகங்களை மீண்டும் மீண்டும் நகலெடுக்க இந்த கட்டளை பயன்படுத்தப்படுகிறது. பாதை நீள சிக்கல்களைத் தீர்க்கும் சூழலில், cp -r அனைத்து திட்டக் கோப்புகளையும் ஆழமான அடைவு அமைப்பிலிருந்து குறுகிய பாதைக்கு நகர்த்துவதன் மூலம் உருவாக்கப் பிழைகளைக் குறைக்கிறது. |
| mkdir | புதிய கோப்பகத்தை உருவாக்குகிறது. வழங்கப்பட்ட ஸ்கிரிப்ட்டில், mkdir ஒரு இலக்கு கோப்பகத்தை உருவாக்கப் பயன்படுகிறது. |
| Set-ItemProperty | ஒரு பவர்ஷெல் கட்டளை பதிவு விசையின் பண்புகளை மாற்றுகிறது அல்லது அமைக்கிறது. இந்த வழக்கில், இது விண்டோஸ் பதிவேட்டில் உள்ள "LongPathsEnabled" சொத்தை மாற்றியமைப்பதன் மூலம் நீண்ட பாதை ஆதரவை செயல்படுத்துகிறது, கணினியில் பாதை நீள வரம்புகளைத் தீர்க்கிறது. |
| Get-ItemProperty | பவர்ஷெல்லில் உள்ள ரெஜிஸ்ட்ரி கீயின் சொத்தை மீட்டெடுக்கிறது. "LongPathsEnabled" பண்பு சரியாக அமைக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்க, தீர்வின் செயல்திறனை உறுதிசெய்ய இங்கே பயன்படுத்தப்பட்டது. |
| set | மாறிகளை வரையறுக்க CMake கட்டளை. திரைக்கதையில், அமைக்கப்பட்டது என்பதை குறிப்பிட பயன்படுகிறது SOURCE_DIR தொடர்புடைய பாதையுடன் மாறி, CMake உருவாக்கத்தின் போது ஏற்படக்கூடிய முழுமையான பாதை நீள சிக்கல்களைத் தவிர்க்க உதவுகிறது. |
| add_library | இந்த CMake கட்டளை ஒரு புதிய நூலக இலக்கை வரையறுக்கிறது. பாதை சிக்கல்களைத் தீர்க்கும் சூழலில், add_library முழுமையான பாதை நீளப் பிழைகளைத் தடுக்க தொடர்புடைய மூல கோப்பகத்துடன் பயன்படுத்தப்படுகிறது. |
| target_include_directories | CMake இல் இலக்குக்கான அடைவுகளை உள்ளடக்கியதைக் குறிப்பிடுகிறது. தொடர்புடைய பாதைகளுடன் இந்த கட்டளையைப் பயன்படுத்துவதன் மூலம், உருவாக்க அமைப்பு வரையறுக்கப்பட்ட தொடர்புடைய பாதையில் தேடுவதற்கு இயக்கப்படுகிறது, இது பாதை நீள வரம்புகளை மீறும் அபாயத்தைக் குறைக்கிறது. |
| Start-Process | புதிய பவர்ஷெல் செயல்பாட்டில் கட்டளை அல்லது ஸ்கிரிப்டை இயக்குகிறது. வழங்கப்பட்ட எடுத்துக்காட்டில், தொடக்க-செயல்முறை உடன் பயன்படுத்தப்படுகிறது -Verb runAs ஸ்கிரிப்ட் நிர்வாக உரிமைகளுடன் இயங்குவதை உறுதி செய்வதற்கான அளவுரு, இது கணினி பதிவேட்டில் அமைப்புகளை மாற்றுவதற்கு அவசியம். |
தீர்வு உத்திகளின் விரிவான விளக்கம்
உரையாற்றுகையில் பாதை நீளம் பிரச்சினை கட்டும் போது எதிர்வினை-சொந்த-புத்துயிர்ப்பு CMake ஐப் பயன்படுத்தி Android இல் நூலகம், நாங்கள் பல ஸ்கிரிப்ட் அடிப்படையிலான தீர்வுகளை செயல்படுத்தினோம். முதல் அணுகுமுறை திட்டக் கோப்புகளை ரூட் கோப்பகத்திற்கு அருகில் இடமாற்றம் செய்வதை உள்ளடக்கியது. போன்ற குறிப்பிட்ட கட்டளைகளுடன் ஷெல் ஸ்கிரிப்டைப் பயன்படுத்துவதன் மூலம் cp -r அனைத்து திட்ட கோப்புகளையும் நகலெடுக்க மற்றும் mkdir இலக்கு கோப்பகத்தை உருவாக்க, அது இல்லை என்றால், நீண்ட பாதைகள் தொடர்பான பிழையைக் குறைப்பதை நோக்கமாகக் கொண்டோம். இது விண்டோஸின் இயல்புநிலை அதிகபட்ச பாதை நீளமான 260 எழுத்துக்களைத் தாக்கும் அபாயத்தைக் குறைக்க உதவுகிறது, இது உள்ளமைக்கப்பட்ட ரியாக்ட் நேட்டிவ் திட்டங்களில் பொதுவானது.
மற்றொரு முக்கிய தீர்வு CMakeLists கோப்பை மாற்றியமைப்பதாகும் உறவினர் பாதைகள் முழுமையானவற்றிற்கு பதிலாக. CMake உருவாக்க செயல்முறையின் போது நீண்ட, உள்ளமைக்கப்பட்ட அடைவு பாதைகளை உருவாக்குவதைத் தடுப்பதன் மூலம் இந்த முறை பாதை நீள வரம்புகளை திறம்பட நிவர்த்தி செய்கிறது. CMake ஐப் பயன்படுத்தி தொடர்புடைய பாதைகளை வரையறுப்பதன் மூலம் அமைக்கப்பட்டது கட்டளை மற்றும் போன்ற கட்டளைகளைப் பயன்படுத்துதல் add_library மற்றும் இலக்கு_அடங்கும்_கோப்பகங்கள், பில்ட் சிஸ்டம் குறுகிய, தொடர்புடைய கோப்பு பாதைகளைப் பயன்படுத்த இயக்கப்படுகிறது, இது "அத்தகைய கோப்பு அல்லது அடைவு இல்லை" பிழையை எதிர்கொள்ளும் வாய்ப்பைக் குறைக்கிறது.
கூடுதலாக, விண்டோஸில் நீண்ட பாதை ஆதரவை இயக்குவது இந்த சிக்கலைத் தீர்ப்பதில் ஒரு முக்கியமான படியாக நிரூபிக்கப்பட்டது. ஒரு பவர்ஷெல் ஸ்கிரிப்ட் விண்டோஸ் ரெஜிஸ்ட்ரி கீயைப் பயன்படுத்தி மாற்றியமைக்க வடிவமைக்கப்பட்டுள்ளது செட்-உருப்படி சொத்து. இந்த கட்டளை "LongPathsEnabled" விருப்பத்தை இயக்குவதன் மூலம் 260 எழுத்துகளின் இயல்புநிலை பாதை நீள வரம்பை புறக்கணிக்க Windows ஐ அனுமதிக்கிறது. ஸ்கிரிப்ட் ரெஜிஸ்ட்ரி கீ சரியாக அமைக்கப்பட்டிருப்பதை உறுதிசெய்கிறது, மேலும் இதைப் பயன்படுத்துகிறது பெறு பொருள் சொத்து மாற்றம் வெற்றிகரமாக உள்ளதா என்பதை சரிபார்க்க கட்டளை. அடைவு உருவாக்கப் பிழைகளைத் தவிர்க்க மற்ற பாதை குறைப்பு முறைகள் போதுமானதாக இல்லாதபோது இந்தத் தீர்வு அவசியம்.
இறுதியாக, PowerShell ஸ்கிரிப்ட் பயன்படுத்துகிறது தொடக்க-செயல்முறை உடன் கட்டளை -Verb runAs நிர்வாக உரிமைகளுடன் ஸ்கிரிப்டை இயக்க கொடி. பதிவு அமைப்புகளை மாற்றுவதற்கு உயர்ந்த அனுமதிகள் தேவைப்படுவதால் இது அவசியம். இந்த நுட்பங்களை இணைப்பதன் மூலம்—திட்டக் கோப்புகளை நகர்த்துதல், CMake உள்ளமைவுகளை மாற்றுதல் மற்றும் நீண்ட பாதை ஆதரவை இயக்குதல்—பாதை நீளம் தொடர்பான CMake உருவாக்கப் பிழையைத் தீர்க்க விரிவான உத்தியை உருவாக்கினோம். இந்தத் தீர்வுகள் தற்போதைய பிழையைத் தணிப்பது மட்டுமல்லாமல், எதிர்காலத் திட்டங்களில் இதே போன்ற சிக்கல்களைச் சமாளிப்பதற்கான மறுபயன்பாட்டு கட்டமைப்பையும் வழங்குகிறது.
தீர்வு 1: திட்டத்தை இடமாற்றம் செய்வதன் மூலம் பாதையின் நீளத்தைக் குறைத்தல்
அணுகுமுறை: திட்டக் கோப்புகளை ரூட் டைரக்டரிக்கு அருகில் நகர்த்த ஷெல் ஸ்கிரிப்ட்
# Step 1: Define source and target directoriessource_dir="C:/Users/ricar/Documents/Github/StockItUp"target_dir="C:/StockItUp"# Step 2: Create target directory if it doesn't existif [ ! -d "$target_dir" ]; thenmkdir "$target_dir"fi# Step 3: Copy project files to the target directorycp -r "$source_dir/"* "$target_dir/"# Step 4: Confirm completionecho "Project files moved to $target_dir"
தீர்வு 2: கோப்பு பாதைகளை சுருக்க CMakeLists மாற்றுதல்
அணுகுமுறை: தொடர்புடைய பாதைகளைப் பயன்படுத்த CMake உள்ளமைவைச் சரிசெய்யவும்
# Set relative paths to reduce absolute path length issuescmake_minimum_required(VERSION 3.10)project(reanimated_project)# Define relative path for source filesset(SOURCE_DIR "src/main/cpp/reanimated")# Add source files using the relative pathadd_library(reanimated STATIC ${SOURCE_DIR}/Common.cpp)# Specify target propertiestarget_include_directories(reanimated PRIVATE ${SOURCE_DIR})
தீர்வு 3: விண்டோஸில் நீண்ட பாதை ஆதரவை இயக்குதல்
அணுகுமுறை: விண்டோஸ் பதிவேட்டில் நீண்ட பாதைகளை இயக்க பவர்ஷெல் ஸ்கிரிப்ட்
# Step 1: Open PowerShell as AdministratorStart-Process powershell -Verb runAs# Step 2: Set the registry key for long pathsSet-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1# Step 3: Confirm the settingGet-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled"
பாதை நீள வரம்புகளை நிவர்த்தி செய்தல் மற்றும் உத்திகளை உருவாக்குதல்
"mkdir: அத்தகைய கோப்பு அல்லது அடைவு இல்லை" பிழையை தீர்ப்பதில் கருத்தில் கொள்ள வேண்டிய மற்றொரு முக்கிய அம்சம் CMake உடன் எவ்வாறு தொடர்பு கொள்கிறது என்பதைப் புரிந்துகொள்வது நிஞ்ஜா உருவாக்க அமைப்பு. நிஞ்ஜா பொதுவாக அதன் வேகம் மற்றும் குறியீட்டை தொகுக்கும் செயல்திறனுக்காக தேர்வு செய்யப்படுகிறது, ஆனால் விண்டோஸில் பாதை நீள வரம்புகளுடன் அதன் இணக்கத்தன்மை சவாலாக இருக்கலாம். இதைச் சமாளிக்க, டெவலப்பர்கள் CMake மற்றும் Ninja ஐக் கவனமாக உள்ளமைக்க வேண்டும், அவை அதிகப்படியான பாதை நீளத்தைத் தவிர்க்க உதவும். தொடர்புடைய பாதைகளைப் பயன்படுத்துவதற்கு உருவாக்க செயல்முறையைத் தனிப்பயனாக்குவது மற்றும் அடைவு கட்டமைப்புகளை முடிந்தவரை எளிமையாக வைத்திருப்பது இதில் அடங்கும்.
விண்டோஸின் கோப்பு முறைமைக் கட்டுப்பாடுகளுக்கு ஏற்றவாறு CMake அல்லது Ninja பயன்படுத்தும் இயல்புநிலை கட்டமைப்பு உள்ளமைவுகளைச் சரிசெய்வது பெரும்பாலும் கவனிக்கப்படாத ஒரு தீர்வாகும். உதாரணமாக, ஒருவர் குறிப்பிட்டதைச் சேர்க்கலாம் கொடிகள் அல்லது அதிகபட்ச பாதை நீளத்தை தாண்டாத மாற்று உருவாக்க கோப்பகங்களை வரையறுக்கவும். கூடுதலாக, டெவலப்பர்கள் தேவையற்ற ஆழமான அல்லது சிக்கலான பாதைகளை அடையாளம் காணவும் சுருக்கவும் தங்கள் திட்டத்தின் சார்பு கட்டமைப்பை மதிப்பாய்வு செய்யலாம். தொகுக்கும்போது பாதை தொடர்பான பிழைகள் ஏற்படும் அபாயத்தைக் குறைக்கும் அதே வேளையில், இந்த அணுகுமுறை மென்மையான உருவாக்க அனுபவத்தை உறுதி செய்கிறது.
போன்ற மூன்றாம் தரப்பு நூலகங்களின் ஒருங்கிணைப்பை மதிப்பீடு செய்வதும் முக்கியமானது எதிர்வினை-சொந்த-புத்துயிர்ப்பு. இந்த நூலகங்கள் அவற்றின் சொந்த உள் அடைவு அமைப்புகளைக் கொண்டிருப்பதால், விண்டோஸின் பாதை நீள வரம்புகளுடன் பொருந்தக்கூடிய தன்மையை உறுதிப்படுத்த தனிப்பயன் சரிசெய்தல் தேவைப்படலாம். நூலக-குறிப்பிட்ட CMake உள்ளமைவுகளை மாற்றியமைப்பதன் மூலம் அல்லது முனை தொகுதிகளை குறுகிய பாதைகளுக்கு மாற்றுவதன் மூலம், டெவலப்பர்கள் முக்கியமான பாதை நீள சிக்கல்களிலிருந்து விடுபட்ட செயல்பாட்டு உருவாக்க சூழலை பராமரிக்க முடியும்.
CMake பாதை நீளப் பிழைகளைத் தீர்ப்பதற்கான பொதுவான கேள்விகள்
- "LongPathsEnabled" சொத்து அமைக்கப்பட்டதா என்பதை நான் எவ்வாறு சரிபார்க்கலாம்?
- நீங்கள் பயன்படுத்தலாம் Get-ItemProperty பதிவேட்டில் அமைப்பு இயக்கப்பட்டுள்ளதா என்பதை சரிபார்க்க PowerShell இல் கட்டளையிடவும்.
- babel.config.js இல் "relativeSourceLocation" விருப்பத்தின் பங்கு என்ன?
- தி relativeSourceLocation பெரிய திட்டங்களில் கோப்பு பாதைகளின் மொத்த நீளத்தைக் குறைக்க உதவும், தொடர்புடைய பாதைகளைப் பயன்படுத்துவதற்கு React Native ஐ அறிவுறுத்துவதற்கு விருப்பம் பயன்படுத்தப்படுகிறது.
- விண்டோஸில் நீண்ட பாதைகளை நிஞ்ஜா கையாள முடியுமா?
- இயல்பாக, விண்டோஸில் நீண்ட பாதைகளுடன் நிஞ்ஜா போராடக்கூடும். நீண்ட பாதை ஆதரவை இயக்குவதன் மூலம் அல்லது குறுகிய பாதைகளைப் பயன்படுத்த நிஞ்ஜாவின் பில்ட் டைரக்டரிகளை மறுகட்டமைப்பதன் மூலம் இதை நீங்கள் குறைக்கலாம்.
- CMake இல் "mkdir: அத்தகைய கோப்பு அல்லது அடைவு இல்லை" பிழை எதைக் குறிக்கிறது?
- இந்த பிழை பொதுவாக விண்டோஸின் அதிகபட்ச நீளத்தை மீறும் கோப்பகத்தை உருவாக்கும் முயற்சியை சுட்டிக்காட்டுகிறது, இது கோப்பகத்தை உருவாக்குவதில் தோல்விக்கு வழிவகுக்கும்.
- திட்ட கோப்புகளை இடமாற்றம் செய்வது நீண்ட கால தீர்வாகுமா?
- உங்கள் ப்ராஜெக்ட்டை உங்கள் இயக்ககத்தின் மூலத்திற்கு நெருக்கமாக நகர்த்துவது பாதைச் சிக்கல்களைத் தற்காலிகமாகச் சரிசெய்யலாம், ஆனால் விண்டோஸில் நீண்ட பாதை ஆதரவை இயக்குவது மற்றும் உங்கள் திட்டத்தின் கோப்பகக் கட்டமைப்பை மேம்படுத்துவது மிகவும் நிலையான தீர்வாகும்.
கட்டுமானப் பிழைகளைத் தீர்ப்பதற்கான இறுதிப் படிகள்
விவாதிக்கப்பட்ட தீர்வுகள் CMake உடன் ரியாக் நேட்டிவ் திட்டங்களை உருவாக்கும்போது பாதை நீள சிக்கல்களை நிர்வகிக்க பல வழிகளை வழங்குகின்றன. திட்ட கட்டமைப்புகளை சரிசெய்தல், உள்ளமைவுகளை மாற்றியமைத்தல் மற்றும் நீண்ட பாதை ஆதரவை செயல்படுத்துதல் ஆகியவை பிழை நிகழ்வுகளை கணிசமாகக் குறைக்கும்.
இந்தச் சிறந்த நடைமுறைகளைச் சேர்ப்பது, டெவலப்பர்கள் ஆண்ட்ராய்டு ஆப்ஸில் பணிபுரிவதை உறுதிசெய்கிறது எதிர்வினை-சொந்த-புத்துயிர்ப்பு பொதுவான கட்டுமான தோல்விகளை தடுக்க முடியும். சரியான படிகள் மூலம், விண்டோஸில் பாதை நீளக் கட்டுப்பாடுகளை திறம்பட சமாளிக்க முடியும்.
ஆதாரங்கள் மற்றும் குறிப்புகள்
- பாதை நீள சிக்கல்களைத் தீர்ப்பது பற்றிய தகவல் CMake மற்றும் நிஞ்ஜா CMake ஆவணங்கள் மற்றும் சமூக விவாதங்களில் இருந்து பெறப்பட்டது. அதிகாரப்பூர்வ CMake ஆவணத்தைப் பார்வையிடவும் CMake ஆவணம் மேலும் விவரங்களுக்கு.
- விண்டோஸில் நீண்ட பாதை ஆதரவை இயக்குவதற்கான வழிகாட்டுதல்கள் மைக்ரோசாப்டின் அதிகாரப்பூர்வ டெவலப்பர் போர்ட்டலில் இருந்து சேகரிக்கப்பட்டன. கட்டுரையைச் சரிபார்க்கவும் மைக்ரோசாப்ட் டெவலப்பர் ஆவணம் .
- திருத்தம் சம்பந்தப்பட்ட தீர்வுகள் babel.config.js கோப்பு மற்றும் ரியாக்ட் நேட்டிவ்-குறிப்பிட்ட செருகுநிரல்களின் பயன்பாடு சமூக விவாதங்கள் மற்றும் ஸ்டாக் ஓவர்ஃப்ளோ பற்றிய சரிசெய்தல் ஆலோசனையின் அடிப்படையில் அமைந்தது. விவாதத் தொடரைப் பார்வையிடவும் ஸ்டாக் ஓவர்ஃப்ளோ .