Apakah mungkin untuk menyetel simbol untuk kompilasi kondisional dengan menyiapkan properti dalam proyek Xcode?
Tujuan saya adalah membuat simbol yang tersedia untuk semua file, tanpa harus menggunakan import / include, sehingga sekumpulan kelas umum dapat memiliki perilaku khusus di beberapa project. Seperti berikut ini, tetapi dengan simbol saya sendiri.
#if TARGET_IPHONE_SIMULATOR
...
#endif
objective-c
xcode
c-preprocessor
Steph Thirion
sumber
sumber
Jawaban:
Buka setelan Target atau Proyek Anda, klik ikon Roda Gigi di kiri bawah, dan pilih "Tambahkan Setelan Buatan Pengguna". Nama pengaturan baru seharusnya
GCC_PREPROCESSOR_DEFINITIONS
, dan Anda dapat mengetikkan definisi Anda di kolom sebelah kanan.Per komentar Steph, sintaks lengkapnya adalah:
Perhatikan bahwa Anda tidak memerlukan '=' jika Anda hanya ingin #menentukan simbol, daripada memberinya nilai (untuk
#ifdef
pernyataan)sumber
Anda tidak perlu membuat pengaturan yang ditentukan pengguna. Pengaturan built-in "Preprocessor Macros" bekerja dengan baik. teks alt http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Jika Anda memiliki beberapa target atau proyek yang menggunakan file awalan yang sama, gunakan Makro Preprocessor Tidak Digunakan Dalam Header yang Dikompilasi sebagai gantinya, sehingga perbedaan dalam definisi makro Anda tidak memicu kumpulan tambahan yang tidak perlu dari header yang telah dikompilasi sebelumnya.
sumber
Sebagai tambahan, jika Anda menggunakan teknik ini untuk mendefinisikan string dalam target Anda, berikut adalah cara saya mendefinisikan dan menggunakannya:
Di Build Settings -> Preprocessor Macros, dan ya garis miring terbalik sangat penting dalam definisi:
Dan di kode sumber:
sumber
Anda dapat menggunakan
*_Prefix.pch
file tersebut untuk mendeklarasikan makro lebar proyek. File itu biasanya ada di grup Sumber Lain Anda .sumber
Ini ada di bawah "GCC 4.2 Preprocessing" (atau masukkan saja "prepro" di kotak telusur) ...
... Namun, untuk kehidupan saya, saya tidak bisa membuatnya bekerja.
Saya memiliki konfigurasi Debug dan Rilis standar, dan saya ingin mendefinisikan DEBUG = 1 dalam konfigurasi debugging. Tetapi setelah menambahkannya sebagai nilai:
(di jendela pengaturan)> Makro Preprocessor: DEBUG = 1
... tidak pernah mencetak / dipanggil. Ini membuatku gila...
sumber
#if DEBUG
:) stackoverflow.com/a/47395485/2778502Menanggapi komentar Kevin Laity (lihat jawaban cdespinosa), tentang bagian GCC Preprocessing yang tidak muncul di setelan build Anda, jadikan Active SDK yang bertuliskan (Base SDK) setelahnya dan bagian ini akan muncul. Anda dapat melakukannya dengan memilih menu Project> Set Active Target> XXX (Base SDK). Dalam versi yang berbeda dari XCode (Base SDK) mungkin berbeda, seperti (Project Setting atau Project Default).
Setelah Anda mendapatkan bagian ini muncul, Anda dapat menambahkan definisi Anda ke Makro Prosesor daripada membuat pengaturan yang ditentukan pengguna.
sumber
Untuk proyek Xcode 9.4.1 dan C ++. Menambahkan
const char*
Makro Preprocessor ke Debug dan Rilis build.Pilih proyek Anda
Pilih Build Settings
Telusuri " Makro Praprosesor "
Buka daftar interaktif
Tambahkan makro Anda dan jangan lupa untuk keluar dari kutipan
Gunakan dalam kode sumber seperti biasa
const char*
sumber
Anda dapat menduplikasi target yang memiliki bagian preprocessing, mengganti namanya menjadi nama yang Anda inginkan, dan kemudian mengubah nilai makro preprocessor Anda.
sumber