web-dev-qa-db-ja.com

Windows上のUbuntu上のBash上のEclipseC / C ++プロジェクト

Eclipse Neon(v4.6)をインストールしました。また、「Windows上のUbuntuでのBash」(2016年9月)もあります。 Cでコンパイルおよびデバッグするためにgccとgdbをインストールしました。ターミナルでテストしたところ、実行されています。

Eclipseを使用して新しいCプロジェクトを作成しようとしていますが、コンパイラの選択段階では、「Windows上のUbuntuでBash」コンパイラを使用するオプションが表示されません。

私の問題を解決する方法はありますか?

10

Eclipseとmakefileプロジェクトを使用します。 「外部ビルダー」を追加してEclipseを構成し、次のスクリプトを使用します。

-c "cd `echo '${project_loc}' | sed  -e 's/C:/\/mnt\/c/g' -e 's/\\\\/\//g'` && make -f path_to_makefile/makefile

cd」とsedのトリックは、Eclipse "C:\"からWindows Subsystem for Linux "/mnt/c/"に変換し、 "\"を "に置き換えることです。 / "

Makeは、${project_loc}で定義されたプロジェクトの場所で実行されます。

Linuxでgdbを実行する方法をまだ理解していません。しかし、少なくともcompile + link(そして私のmakefileで定義されているユニットテストを実行する)は、ネイティブのUbuntuツールチェーンのフルスピードを活用しています...

3
espenalb

Bash/WSLは非常に新しく、Bashの外部からLinuxコマンドを正しく呼び出す機能(bash.exe -c ...を使用)は(まだ)多くの開発ツールで十分に理解されていないため、カスタムタスクを定義するためにいくつかの作業を行う必要がある場合があります/呼び出したい必要なbash.exe -c "gcc ..."コマンドを呼び出すアクション。

ただし、パスをlib/include/tools/etcに切り替えることができるmakefile(または、おそらくさらに良いのは、CMakeファイル)を絶対にできるはずです write/configure 。環境に基づいて、WindowsまたはLinuxでスムーズに構築します。

このシナリオは、私が取り組んで公開するクールなブログ投稿のアイデアを引き起こしました 私たちのブログhttps://blogs.msdn.Microsoft.com/commandline 次の1、2週間で:)

HTH。

5
Rich Turner

C/C++でのプログラミングにwslを使用する最良の方法は、Microsoftが行っているようなものだと思います。 Visual Studioは、sshを使用して「C++ forLinuxDevelopment」のLinux環境に接続します。したがって、この場合、wslにopensshサーバーをセットアップし、IDE)からlocalhostに接続して、リモートプロジェクトを開始できます。

2017年5月

4

私にはもっと良い方法があります...スクリーンショットに示すように、新しいユーザーターミナルを追加し、Eclipseのローカルターミナルセットアップで「Ubuntu.exe」の場所を指定できます。

私の場合、ディレクトリは...

  • C:\ Users\MyuserName\AppData\Local\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc

eclipseがubuntu16.4.exeを選択できない場合は、パスに手動で書き込みます。画像に示すように。 see this...

次に、適用して閉じるをクリックするだけです。ターミナル(Ctrl + Alt + Shift + T)を開き、Ubuntuターミナルを選択します。

次に、ターミナルからソースディレクトリに移動し、プロジェクトをコンパイルします。楽しい...

2
Logan859

最初はespenalbのアドバイスに従いましたが、ビルド出力が正しく解析されませんでした。行をダブルクリックしてもファイルが開かず、エラーのある行に移動しませんでした。

結局、(外部ビルダーを追加する代わりに)組み込みのCDTビルダーを変更しました。ビルドコマンドを次のように変更しました(alexは私のユーザー名です):

bash.exe -c make 2>&1 | sed -e 's/\\/home\\/alex/C:\\\\Users\\\\alex/g' -e 's/\\//\\\\/g'

このようにして、make出力は「/ home/alex」のパスから「c:\ users\alex」の下の同じパスに変換されます。これにより、解析の問題が修正されます。

また、Eclipseでビルド出力が「ビルドが正しく構成されていません」に置き換えられるという問題がありました。プロジェクトプロパティ(C Makefileプロジェクト)の[ビルダー]サブメニューで[スキャナー構成ビルダー]を無効にすることで修正しました。また、デフォルトのビルドコマンドからターゲット「all」と「clean」を削除する必要があります。

1
Alex Margolin