web-gelistirme-sc.com

Bir CMake projesini Eclipse CDT'sine Aktarma

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. 

24
rajat

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.

34
arrowd

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:

  • Çalışma alanı alt dizini için cmake işlevini kullandım, ancak istediğiniz bir adı kullanabilirsiniz.
  • Yapı yapılandırmanızda herhangi bir değişiklik yaparsanız (örneğin Makefile.am düzenleme), Eclipse'in değişiklikleri alması için son komutu yeniden çalıştırmanız gerekir.
20
user149408

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.

  • Eclipse'de, Dosya> Yeni> C Projesi öğesini seçin.
  • Bir proje adı girin ve kaynak ağacınızın kökünü proje konumu olarak seçin.
  • Proje türü olarak Yürütülebilir> Boş Proje öğesini seçin ve varsayılan takım zincirini kabul edin.
  • Finish 'e tıklayın ve çalışma alanınızda bir CMake projeniz var.
2
user149408

Masaüstümdeki basit bir çözüm: 

  1. Eclipse: New -> New C/C++ Project -> Empty or Existing CMake Project içinde bir proje adı seçin (örn. Proje).
  2. Eski dizinin tüm dosyalarınızı yenisine kopyalayın (projenizin yolu).
1
Yushan Zhang

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ç)

0
Nadav B

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:

  • Önceden yapılandırılmış bir projeyi içe aktarma yeteneği. Büyük derleme sistemleri genellikle komut satırında sayısız değişkeni komut satırına geçirmek için komut dosyalarını kullanır.
  • Sadece derleme sisteminin bir parçası ne indekslenmelidir.
  • Kaynak ağaç yapıları dışında çalışması gerekir.
  • Önişlemci kullanması gerekir, çalışma indekslemesi için derleme sistemindeki yolları tanımlar ve dahil eder.
  • Ninja jeneratörü ile çalışması gerekir (yani, hiçbir dosya oluşturuldu).

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.

0
kdm