2011-10-07 16 views
8

.c'de biten dosyalarda C kodunu derlemek için g ++ kullandığım bir projede çalıştım. Sebebi, g ++ 'nın daha iyi uyarı mesajları verdiği söylendi.CMake, C dosyalarını derlemek için g ++ kullanabilir mi?

Bu projenin yapım sürecini CMake kullanacak şekilde değiştiriyorum. Başlangıçta CMake C dosyalarını derlemek için gcc kullanmak istediğini buldum. Bu, kullanım zamanında değişkenleri bildirme gibi şeyler nedeniyle başarısız oldu. Bu yüzden CMakeLists.txt dosyasında ayarlama

set(CMAKE_C_COMPILER_INIT g++) 

kullanarak C dosyalarını derlemek için g ++ kullanmaya çalıştı. Ama bu hata iletisine neden olur: Benim .c dosyalarını yeniden adlandırma edilmiştir

#error "The CMAKE_C_COMPILER is set to a C++ compiler" 

beni işlerin ve belki de en iyi şekilde yapmak için en kolay yolu gibi görünüyor olarak bu sorunu çözmeye yönelik .Cpp için çok. Ama CMake'i C dosyalarını derlemek için g ++ kullanmaya zorlamanın mümkün olup olmadığını merak ediyordum.

+1

- Bunu onaylayabilir misin? Çok şüpheli olduğunu söyleyebilirim, çünkü (bildiğim kadarıyla) her ikisi de aynı derleyiciyi farklı argümanlarla çağırıyorlar (dil, yolları, standart kütüphane, vs.). Bunun dışında, g ++ C derleyicisi böylece çok kötü C++ yazmayı bitirdiniz. – delnan

+0

C yazıyorsanız, bir C derleyicisiyle derleyin. C ve C++ aynı şey değildir. – Kusalananda

+0

'_This, time_ kullanımındaki değişkenleri bildirme gibi şeyler nedeniyle başarısız oldu'; C99 modunda C89 modunda GCC kullandığınız gibi geliyor. Bir şekilde derleyiciye '-std = c99 'eklemeyi deneyin. –

cevap

21

Bu amaçla derleyiciyi geçersiz kılmamalısınız. Eğer gerçekten C C dosyalarını derlemek gerekiyorsa ++ sonra da dosyaları C++ diline ait cmake öğretmek olmalıdır: "sebebi g ++ daha iyi uyarı mesajlarını sahip olduğunu söyledi olmam"

set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX) 
+0

yapmak istediğim gibi geliyor, en iyi fikir değil ve dosyaları .cpp olarak yeniden adlandırmalıyım. Ama doğru bir cevap için teşekkürler, gerçekten gerekli olması durumunda ne istediğimi bilmek için yararlıdır. –

+0

projemde bunu tek bir dosyaya uygulama neden projedeki tüm dosyaların C++ olarak derlenmesini sağlayacak herhangi bir fikriniz var mı? Bir sürü .c dosyası var ve C++ olarak derlenecek birini istiyorum. – Scorpio

+1

@Scorpio, Aslında bu belirtiyi istiyorum, ancak tanımlanmış bir şekilde ... CMake neden tüm .c dosyalarını C++ olarak derlemenin bir yolu yok? – kchoi