Yerli CMake projem var ve Eclipse IDE ile birlikte kullanmak istiyorum, böylece geliştirme işlemini otomatik tamamlama ve diğer özellikleri sağlayarak kolaylaştırıyor. CMake projesinin Eclipse’de nasıl içe aktarılacağını bulamıyorum.
Not: CMake ile iyi çalışan diğer IDE'lerin önerilerine açığım.
KDevelop harika CMake desteğiyle mükemmel bir IDE.
Eclipse'e gelince - şunu çalıştırın:
cd <project_dir> cmake -G "Eclipse CDT4 - Unix Makefiles" ./
Bu sizin için Eclipse projesini üretecek.
Arrowd'un Eclipse'e verdiği cevabı ayrıntılandırmak:
İlk önce, CMake dosyaları için bir dizin seçin. Eclipse çalışma alanlarımın
~/workspaces ve kaynak kodun
~/src olarak saklanmasını tercih ederim. Projeyi inşa etmem veya test etmem gereken veriler projenin çalışma alanı direktörünün alt dizinine giriyor, bu yüzden aynısını CMake için de yapmayı öneriyorum.
Hem çalışma alanınızın hem de kaynak klasörlerinizin
someproject olarak adlandırıldığını varsayalım:
cd ~/workspaces/someproject mkdir cmake cd cmake cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/someproject
Ardından, Eclipse çalışma alanınızda şunları yapın:
Dosya> İçe Aktar ...> Genel> Çalışma Alanında Mevcut Projeler
Check Kök dizini seç ve
~/workspaces/someproject/cmake öğesini seçin. Emin olun Projeleri çalışma alanına kopyala işaretli değil.
Finish 'e tıklayın ve çalışma alanınızda bir CMake projeniz var.
Dikkat edilmesi gereken iki şey:
cmakeişlevini kullandım, ancak istediğiniz bir adı kullanabilirsiniz.
Makefile.amdüzenleme), Eclipse'in değişiklikleri alması için son komutu yeniden çalıştırmanız gerekir.
CMake’in CDT proje üreticisinin bakımsız gözüktüğünü ve çeşitli sorunlara neden olduğunu öğrendim, özellikle de, Eclipse’in daha sonraki sürümlerinde (ki benim de payım vardı).
Öneri, tek gerçeği kaynağı olarak
CMakeLists.txt kullanan cmake4Eclipse (Eclipse Marketplace'ten edinilebilir) kullanmaktır. Ayrıca kaynak ağacı çalışma alanınızdan ayrı tutmanızı sağlar.
Masaüstümdeki basit bir çözüm:
New -> New C/C++ Project -> Empty or Existing CMake Projectiçinde bir proje adı seçin (örn. Proje).
Aşağıdakileri yapın:
mkdir debug (veya bırakın veya başka bir isim)
cd debug cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_Eclipse_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_Eclipse_MAKE_ARGUMENTS=-j3 -DCMAKE_Eclipse_VERSION=4.1 ../
Doğru Eclipse sürümünü ayarladığınızdan emin olun.
Ardından klasörü Eclipse'den açın (Projeleri Aç)
Kısacası, sadece CDT üreticisi şu anda uygun bir seçenektir. Niye ya? Bunun nedeni Eclipse'in önişlemci tanımlarını alması, yolları içermesi ve yapıya hangi dosyaların dahil olduğu bir yerden gelmesidir. Aksi halde, doğru makrolar tanımlanmadan her şeyi ve kötü bir şekilde endekslemeyi başarabiliriz. Eğer deponuzu veya orta veya büyük boylu bir ağacı güçlendirirseniz, her şeyi indekslemek basitçe Eclipse'in endeksleyicisinin hızı ve güvenilirliği ile gerçek dünyada işe yaramayacak. Pek çok insan muhtemelen Ninja'yı bu günlerde inşa etmek için kullanmak istediğinden (kim yalnızca kirli olanı görmek için sıcak bir yapı için 30 saniye beklemek ister?), Bu, şu anda desteklenen makefile'ler aracılığıyla bu bilgiyi içe aktarmanın tek yolunu dışlıyor, Her konfigürasyonda iki ayrı inşa sistemi kurmak zorunda kalmazsanız, otomasyonu gerçek bir acıya çevirir (cmake, listeler değiştiğinde yeniden çalışır).
Eclipse Photon'da cmake projelerini doğrudan almak için yeni bir seçenek var. Ancak, bu aşamada, önemsiz projeler dışında herhangi bir şey için çoğunlukla işe yaramaz göründüğünü söyleyebilirim, çünkü önceden yapılandırılmış bir yapı dizinini içe aktarmanın herhangi bir yolu veya iletilecek değişkenleri ve argümanları ayarlamak için herhangi bir yer yok gibi görünüyor. cmake. Bu özelliğin gerçekte nasıl çalıştığını henüz bilmiyorum, ancak Eclipse'nin hangi add_subdirectory () çağrılarının yapıldığını ve hangi önişlemcinin yapıldığını görmek için mantığı izleyerek CMakeLists hiyerarşisinde ayrıştırması gerektiği görünüyor. tam olarak bunun için cmake server kipine sahip olduğumuz düşünülürse, geleceği olmayan bir yaklaşım gibi görünen tanımlar ve bu işi yapmak için Eclipse'deki neredeyse tüm cmake dil ayrıştırıcılarının yeniden uygulanmasını gerektireceği şüphesizdir.
Şimdiye kadar, gerçek dünya gereksinimlerini karşılayan tek uygulanabilir çözüm cmake CDT jeneratörünü kullanmak gibi görünüyor. Yukarıda belirtilen bilgileri doğrudan cmake içinden alabilir ve .cproject dosyasına yazabilir. Daha önce belirtildiği gibi, gerçekten korunmaz ve bazı sorunlara neden olan .cproject için eski bir şablona dayanır.
Müşteri desteği için kendi minimum gereksinimlerim:
Yukarıdakilerin hiçbirini şu anda CDT üreteci dışında bir şeyle nasıl yapacağımı göremiyorum ve çalışan ve rafine edilmiş bir çözüm elde etmenin tek yolu cmake üretecine biraz saldırmak ya da üretilen .cproject işleminin sonrasını işlemektir. Neyin endeksleneceği konusunda seçici (yani, tüm CMAKE_SOURCE_DIRECTORY değil). Bu başka bir hack (cmake, yapılandırma adımına yapılandırma sonrası görevleri eklemek için herhangi bir yolu olmadığı için, bir işlemi gerçekleştirmemiz ve ana cümleyi sonlandırma için izlememiz gerektiğinden, mahkeme adına bilinçli bir karardır. geliştiriciler görünüşte ve belki de haklı olarak
Kesinlikle daha iyi bir yaklaşımın bilgisini gerçekten takdir ediyorum. Eclipse'deki cmake desteğinin durumu, C++ gelişimi için olması gereken bir araç için oldukça kasvetli. Dizin oluşturucu (en azından Eclipse'in yeniden başlatılmasını gerektiren düzenli kilitlemelerden etkilenmiyorsa) aslında en iyiler arasında ve Eclipse de kodun etrafından dolaşmak için çok iyi bir ortam.