2013-04-02 16 views
5

C kodumu derlemek için Emacs içinde M-x compile kullanın ve sonra make -k'u başlatıp kodu derlememi sağlayın. Clang'i (veya kurduktan sonra GCC 4.8'i) varsayılan derleyici olarak kullanmak isterim. Benclang -Wall -Werror -std=c99 -ggdb -O0 için aliased var ve bu Emacs dışında komut satırından Clang çağırır, Emacs içinde M-x compile çağırma hala yüklü olan GCC sürüm 4.7 cc takma gibi görünüyor. Clang (ve GCC 4.8) tarafından sağlanan daha zengin ve daha anlaşılabilir hata ve uyarı mesajlarına girmek istiyorum ama şu anda K &'dan geçiyorum çünkü yazdığım her kısa öğrenci seviyesi programı için ayrı bir makefile yaratmak istemiyorum. R egzersizleri çözmeyi de içerir.Emacs İçindeki Varsayılan Derleyiciyi Değiştir?

Emacs'i M-x compile ve make -k'un GCC'nin eski sürümü yerine Clang (veya GCC 4.8) çağırması gerektiğine nasıl ikna edebilirim?

cevap

1

Makefile yazabilir ve derleme satırında clang'i açıkça kullanabilirsiniz. Böyle

şey çalışacak: Son satır aslında çalışmak için bir sekme ile başlaması gerekir

 
CC=clang 
CFLAGS= -Wall -Werror -std=c99 -ggdb -O0 

%: %.c 
	$(CC) $(CFLAGS) $^ -o [email protected] 

Not söyledi.

8

Bu emacs değil, make. Varsayılan olarak CC, varsayılan olarak gcc değerine dönüştürür. Eğer (Unix kullandığınız varsayılmıştır) emacs'ı başlamadan önce Sadece bu çalıştırın:

$ export CC=clang 

Alternatif doğrudan CC belirten bir makefile kullanın. makefile içinde olduğu varsayıldığında

+0

Çevresel değişken olarak ayarlamıyorum ancak yukarıda listelenen seçeneklerle kabuklarımın içinde bulunan 'cc' (küçük harfler) var ve her iki seçeneğimde de bu satır var. profile 've' .bashrc' dosyaları. Cc komut satırından doğru yazıldığında, "gcc" yerine "clang" başlar. Bunun yerine bir 'env' değişkeni olarak dışa aktarmalı mıyım? Ve evet ise, muhtemelen, ALL CAPS'nin 'env' değişken kuralını kullanın? – haziz

+0

@haziz - evet, başlıklar zorunludur – teppic

1

, size aşağıdakilerden birini yapabilirsiniz kodunuzu derlemek için $(CC) kullanıyor: Eğer M-x compile yaptığınızda

  • , sen CC=clang make -k için derleme komutu değiştirebilir.

  • sizin .emacs dosyasında aşağıdaki satırı ekleyin:

    (setq compile-command "CC=clang make -k")

0

Ayrıca yapabiliriz make olmadan. @Lazylabs, compile-command değerini değiştirebileceğinizi belirtti. o mod özgü hale gelmesi için Emacs yapılandırma için bu ekleyin:

(add-hook 'c-mode-hook 
     (lambda() 
     (setq compile-command 
       (concat "clang -Wall -Werror -std=c99 -ggdb -O0" buffer-file-name)))) 

varsayılan olarak geçerli dosya adını kullanır.

İlgili konular