2009-12-11 24 views
6

Bir başlıktaki C++ kodumdaki SKELETON_JAR değişkenini kullanıyorum. Bununla birlikte, kullanıcının kavanoğun yerini derleme zamanında kolayca tanımlamasına izin vermek istiyorum. Bence bunu yapmanın en kolay yolu makefile ile bu tanımlamayı yapmaktır.C++ önişlemci değişkeni

#define SKELETON_JAR "./Util.jar" 
+0

Yapım ortamınız nedir? İşletim Sisteminiz? –

cevap

8

:

#ifndef SKELETON_JAR 
    #define SKELETON_JAR "./Util.jar" // default path 
#endif 
Örneğin

ve makefile içinde CPPFLAGS:=-DSKELETON_JAR="./Util.jar" kullanın.

Elbette, varsayılan örtük kuralları kullanıyorsanız, derleme kuralının bir parçası olarak CPPFLAGS'un derleyiciye iletildiğinden emin olmalısınız.

From GNU Make documentation:

Derleme C programları

hiçbir formu `$ (CC) -c $ (CPPFLAGS) $ (CFLAGS)'

bir komutla nc otomatik yapılır
+0

Kullanışlı bir koşullu derleme bitidir, ancak OP'nin makefile'sinin doğası hakkında herhangi bir varsayımda bulunmam riskini taşımazdım. Önemli olan sadece -D komut satırı anahtarıdır. – Clifford

+0

teşekkürler çocuklar, her iki cevap da böyle bir şey yapabileceğini varsayılan bir yolu tanımlayan alternatif olarak –

+2

harika: SKELETON_JAR #error #ifndef sen olacak Bu şekilde #endif "SKELETON_JAR tanımlanmamıştır" Makefile'de tanımlanmayan herhangi bir durumu kolayca yakalayın – Glen

6

derleyici bağlı olarak, bunu yapmak için, normal yolu makefile derleyici '-D bayrağı kullanmaktır.

MYFLAGS = -DSKELETON_JAR = "foo" daha sonra o

:

gcc $ (MYFLAGS) $ (OTHER_STUFF) Kodunuzda

+0

Downvoter'a - bu cevabın hangi bölümü yanlış? –

+0

Aynı şeyi merak ediyordum –

+0

Bazı insanlar sadece oylama yapmayı tercih ediyor. OP'nin makefile ile ilgili muhtemelen kafa karıştırıcı varsayımlar yapmaktan ziyade -D = GCC seçeneğini tanımlamıştım. – Clifford

0

Aynı için derleme işaretlerini kullanın ve Makefile'de bayrağı tanımlayın.