Pertanyaan Melewati C / C ++ #defines untuk membuat file


Saya mengembangkan C / C ++ menggunakan Eclipse IDE. Eclipse juga menghasilkan makefile yang saya tidak ingin edit karena hanya akan ditimpa.

Saya ingin menggunakan makefile itu untuk membangun malam di dalam Hudson.

Bagaimana cara saya melewati #defines yang dibuat dalam file proyek IDE ke file makefile? (dan mengapa Eclipse tidak menyertakan mereka di file makefile yang dihasilkan?)

Aku benar-benar tahu ini, lalu secara tidak sengaja menimpanya :-( Tapi setidaknya aku tahu itu bisa dilakukan ...


32
2018-01-11 02:44


asal


Jawaban:


Jika Anda menjalankan make dari baris perintah, gunakan

make CPPFLAGS=-DFOO

yang akan menambahkan -DFOO ke semua kompilasi. Lihat juga CFLAGS, CXXFLAGS, LDFLAGS dalam manual make.


30
2018-01-20 23:42



Anda bisa menulis program kecil untuk menyertakan header dan menulis fragmen makefile yang Anda include di makefile utama (membutuhkan GNU).

Ini adalah solusi yang cukup buruk yang membutuhkan cukup banyak peretasan tangan. Akan lebih elegan parse file proyek dan menulis fragmen makefile.


2
2018-01-11 03:00



Untuk GCC gunakan -D define.

OP berkomentar di bawah ini bahwa dia ingin lulus mendefinisikan menjadi make dan mengirimkannya ke GCC.

Make tidak mengijinkan ini. Biasanya Anda hanya menambahkan aturan make lain untuk menambahkan definisi. Misalnya 'membuat rilis' vs 'membuat debug'. Sebagai pencipta makefile Anda membuat dua aturan dan memiliki definisi yang tepat dalam file make. Sekarang jika Eclipse tidak meletakkan definisi ke dalam makefile untuk Anda, saya akan mengatakan Eclipse rusak.


1
2018-01-11 02:49



Jika Anda menggunakan autotools, opsi lain adalah memiliki 2 direktori 'bin / debug' dan 'bin / release'.

# Simple bootstrap script.

# Remove previously generated filed and call autoreconf.
# At the end configure 2 separate builds.
echo "Setting up Debug configuration: bin/debug"
../../configure CXXFLAGS="-g3 -O0 -DDEBUG=1"
echo "Setting up Release configuration: bin/release"
cd bin/release/
../../configure CXXFLAGS="-O2"

Pengaturan Eclipse. Buka properti proyek (Project-> Properties-> C / C ++ Build-> Builder Settings) dan tetapkan Build Location-> Build Directory ke

${workspace_loc:/helloworld/bin/debug}

Mengganti 'helloworld' dengan direktori proyek Anda relatif terhadap ruang kerja (atau Anda dapat menyediakan jalur absolut $ {/ abs / path / debug}). Lakukan hal yang sama dengan Rilis config, ganti "/ debug" dengan "rilis" di ujung jalan.

Metode ini sepertinya membuang-buang ruang disk, tetapi alternatif yang valid untuk mencapai build yang benar-benar terpisah.


1
2017-12-24 03:14