Saya memiliki kotak-kotak berikut:
- Kotak Windows dengan Eclipse CDT,
- Sebuah kotak Linux, hanya dapat diakses oleh saya melalui SSH.
Baik kompiler maupun perangkat keras yang diperlukan untuk membangun dan menjalankan proyek saya hanya pada mesin B.
Saya ingin bekerja "secara transparan" dari kotak Windows pada proyek itu menggunakan Eclipse CDT dan dapat membangun, menjalankan dan men-debug proyek dari jarak jauh di dalam IDE.
Bagaimana cara mengaturnya:
- Bangunan akan bekerja? Adakah solusi yang lebih sederhana daripada menulis makefile lokal yang akan digunakan
rsync
oleh proyek dan kemudian memanggil makefile jarak jauh untuk memulai pembuatan sebenarnya? Apakah Eclipse berhasil membangun memiliki fitur untuk itu? - Proses debug akan berhasil?
- Lebih disukai - pengindeksan kode Eclipse CDT akan berfungsi? Apakah saya harus menyalin semua file header yang diperlukan dari mesin B ke mesin A dan menambahkannya untuk memasukkan path secara manual?
rsync
seperti yang telah saya lakukan tersebut.Jawaban:
Coba Remote System Explorer (RSE). Ini adalah set plug-in untuk melakukan apa yang Anda inginkan.
RSE mungkin sudah termasuk dalam instalasi Eclipse Anda saat ini. Untuk mengecek Eclipse Indigo, buka Window > Open Perspective > Other ... dan pilih Remote System Explorer dari dialog Open Perspective untuk membuka perspektif RSE.
Untuk membuat proyek jarak jauh SSH dari perspektif RSE di Eclipse:
Jika dilakukan dengan benar, sekarang harus ada proyek jarak jauh baru yang dapat diakses dari Project Explorer dan perspektif lain dalam gerhana. Dengan koneksi SSH, pengaturan dengan benar kata sandi dapat dijadikan bagian opsional dari proses otentikasi SSH yang normal. Proyek jarak jauh dengan Eclipse via SSH sekarang dibuat.
sumber
Cara yang paling sederhana adalah dengan menjalankan Eclipse CDT di Linux Box dan menggunakan X11-Forwarding atau perangkat lunak desktop jarak jauh seperti VNC.
Ini, tentu saja, hanya mungkin ketika Eclipse Anda hadir di kotak Linux dan koneksi jaringan Anda ke kotak cukup cepat.
Keuntungannya adalah, karena semuanya bersifat lokal, Anda tidak akan memiliki masalah sinkronisasi, dan Anda tidak mendapatkan masalah lintas platform yang canggung.
Jika Anda tidak memiliki gerhana di dalam kotak, Anda dapat berpikir untuk berbagi direktori kerja linux Anda melalui SMB (atau SSHFS) dan mengaksesnya dari mesin windows Anda, tetapi itu akan membutuhkan beberapa pengaturan.
Keduanya akan lebih baik daripada memiliki dua salinan, terutama ketika itu lintas platform.
sumber
DISPLAY
variabel sehingga Eclipse tahu di mana server berada.Saya sendiri berada di tempat yang sama (atau dulu), FWIW saya akhirnya memeriksa untuk berbagi samba pada host Linux dan mengedit yang berbagi secara lokal pada mesin Windows dengan notepad ++, kemudian saya dikompilasi pada kotak Linux melalui Putty. (Kami tidak diizinkan memperbarui versi editor versi 10 pada host Linux dan tidak memiliki Java, jadi saya menyerah pada penerusan X11)
Sekarang ... Saya menjalankan Linux modern di VM di host Windows saya, menambahkan semua alat yang saya inginkan (misalnya CDT) ke VM dan kemudian saya checkout dan membangun di chroot jail yang sangat mirip dengan RTE.
Ini solusi kikuk tapi saya pikir saya akan memasukkannya ke dalam campuran.
sumber
Solusi saya mirip dengan SAMBA kecuali menggunakan sshfs. Pasang server jarak jauh saya dengan sshfs, buka proyek makefile saya pada mesin jarak jauh. Pergi dari sana.
Sepertinya saya bisa menjalankan antarmuka GUI untuk lincah dengan cara ini juga.
Membangun kode remote saya sesederhana: ssh address remote_make_command
Saya mencari cara yang layak untuk debug. Mungkin melalui gdbserver?
sumber
Saya memiliki masalah yang sama 2 tahun yang lalu dan saya menyelesaikannya dengan cara berikut:
1) Saya membangun proyek saya dengan makefile, tidak dikelola oleh eclipse 2) Saya menggunakan koneksi SAMBA untuk mengedit file di dalam Eclipse 3) Membangun proyek: Eclipse memanggil make "lokal" dengan makefile yang membuka koneksi SSH ke Linux Tuan rumah. Pada baris perintah SSH Anda dapat memberikan parameter yang dijalankan pada host Linux. Saya menggunakan untuk parameter itu sebuah skrip shell makeit.sh yang memanggil make "real" pada host linux. Target berbeda untuk membangun dapat Anda berikan juga dengan parameter dari makefile lokal -> makeit.sh -> makefile di host linux.
sumber
Saya mencoba
ssh -X
tetapi lambat sekali.Saya juga mencoba RSE, tetapi bahkan tidak mendukung membangun proyek dengan Makefile ( saya diberitahu bahwa ini telah berubah sejak saya memposting jawaban saya , tetapi saya belum mencobanya)
Saya membaca bahwa NX lebih cepat daripada penerusan X11, tetapi saya tidak bisa menjalankannya.
Akhirnya, saya mengetahui bahwa server saya mendukung X2Go (tautannya memiliki petunjuk pemasangan jika milik Anda tidak). Sekarang saya hanya perlu:
sudo apt-get install x2goclient
di Ubuntu),Semuanya seolah-olah saya sedang mengerjakan mesin lokal, termasuk membangun, debugging, dan pengindeksan kode. Dan tidak ada kelambatan yang nyata.
sumber
Untuk kasus ini, Anda dapat menggunakan ptp eclipse https://eclipse.org/ptp/ untuk penelusuran dan pembuatan sumber.
Anda dapat menggunakan pluging ini untuk men-debug aplikasi Anda
http://marketplace.eclipse.org/content/direct-remote-c-debugging
sumber
Jawaban ini saat ini hanya berlaku untuk menggunakan dua komputer Linux [atau mungkin bekerja pada Mac juga? - belum teruji pada Mac] (menyinkronkan dari satu ke yang lain) karena saya menulis skrip sinkronisasi ini di bash. Ini hanyalah sebuah pembungkus
git
, jadi jangan ragu untuk mengambilnya dan mengubahnya menjadi solusi Python lintas-platform atau sesuatu jika Anda mau.Ini tidak secara langsung menjawab pertanyaan OP, tetapi begitu dekat saya jamin itu akan menjawab pertanyaan banyak orang lain yang mendarat di halaman ini (termasuk saya, sebenarnya, ketika saya datang ke sini dulu sebelum menulis solusi sendiri), jadi saya Saya mempostingnya di sini.
Aku ingin:
Mari kita panggil komputer pertama tempat saya menulis kode "PC1" (Personal Computer 1), dan komputer ke-2 tempat saya membuat kode "PC2". Saya membutuhkan alat untuk menyinkronkan dengan mudah dari PC1 ke PC2. Saya mencoba
rsync
, tetapi itu sangat lambat untuk repo besar dan mengambil banyak bandwidth dan data.Jadi, bagaimana saya melakukannya? Alur kerja apa yang harus saya gunakan? Jika Anda memiliki pertanyaan ini juga, inilah alur kerja yang saya putuskan. Saya menulis skrip bash untuk mengotomatiskan proses dengan menggunakan
git
untuk secara otomatis mendorong perubahan dari PC1 ke PC2 melalui repositori jarak jauh, seperti github. Sejauh ini bekerja dengan sangat baik dan saya sangat senang dengannya. Ini jauh lebih cepat daripadarsync
, lebih dapat dipercaya menurut saya karena setiap PC mempertahankan repositori fungsional, dan menggunakan bandwidth yang jauh lebih sedikit untuk melakukan seluruh sinkronisasi, sehingga mudah dilakukan melalui hot spot ponsel tanpa menggunakan banyak data Anda.Mempersiapkan:
Instal skrip pada PC1 (solusi ini mengasumsikan ~ / bin berada di $ PATH Anda):
Sekarang edit file "~ / .sync_git_repo" yang baru saja Anda salin di atas, dan perbarui parameternya agar sesuai dengan kasus Anda. Berikut adalah parameter yang dikandungnya:
Git klon repo Anda yang ingin Anda sinkronkan pada PC1 dan PC2.
Sekarang, masuklah
cd
ke direktori mana saja di git repo di PC1, dan jalankan:Itu dia! Sekitar 30 detik kemudian semuanya akan disinkronkan secara ajaib dari PC1 ke PC2, dan itu akan mencetak output sepanjang waktu untuk memberi tahu Anda apa yang dilakukannya dan di mana ia melakukannya pada disk Anda dan di komputer mana. Ini aman juga, karena tidak menimpa atau menghapus apa pun yang tidak dikomit. Alih-alih, ia mendukungnya terlebih dahulu! Baca lebih lanjut di bawah untuk cara kerjanya.
Inilah proses yang digunakan skrip ini (yaitu: apa yang sebenarnya ia lakukan)
rsync
adalah salinan skrip ke PC2, dan melakukanssh
panggilan untuk memberitahu PC2 untuk menjalankan skrip dengan opsi khusus untuk hanya melakukan hal-hal PC2.cd
ke repo, dan memeriksa untuk melihat apakah ada perubahan lokal yang tidak dikomit. Jika demikian, ia membuat cabang cadangan baru yang dipotong dari cabang saat ini (nama sampel:my_branch_SYNC_BAK_20200220-0028hrs-15sec
<- perhatikan bahwa YYYYMMDD-HHMMhrs - SSsec), dan melakukan perubahan yang tidak dikomit ke cabang tersebut dengan pesan komit seperti DO BACKUP OF ALL PERUBAHAN YANG TAK TERDAPAT PADA PC2 (TARGET PC / BUILD MACHINE). Sekarang, ia memeriksa cabang SYNC, menariknya dari repositori jarak jauh jika belum ada di mesin lokal. Kemudian, ia mengambil perubahan terbaru pada repositori jarak jauh, dan melakukan hard reset untuk memaksa repositori SYNC lokal agar sesuai dengan repositori SYNC jarak jauh. Anda mungkin menyebutnya "tarikan keras". Namun, ini aman, karena kami telah mendukung setiap perubahan yang tidak dikomit yang kami miliki secara lokal pada PC2, jadi tidak ada yang hilang!Sumber:
Terkait:
sumber