差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gnustep:gnustep-make [2025/05/21 10:54] – [例2: Hello Panel] freemikangnustep:gnustep-make [2025/06/13 12:43] (現在) – [例2: Hello Panel] Add puctuations freemikan
行 1: 行 1:
 ====== GNUstep Make ====== ====== GNUstep Make ======
 +[[gnustep:|{{:gnustep:gnustep_logo.svg?150|GNUstep logo}}]]
 +
 GNUstepは、GNU MakeのMakefileのコレクションによる、独自のビルドツールを提供しています。 GNUstepは、GNU MakeのMakefileのコレクションによる、独自のビルドツールを提供しています。
  
行 5: 行 7:
  
 このビルドツールをGNUstep Makeと呼ぶことにします。 このビルドツールをGNUstep Makeと呼ぶことにします。
-いくつかの簡単なルールを覚えてしまえば、手動で直接ObjCコンパイラを実行したり、自前のMakefileを書いたりする手間が大幅に省けるようになります。 +いくつかの簡単なルールを覚えてしまえば、手動で直接Objective-Cコンパイラを実行したり、自前のMakefileを書いたりする手間が大幅に省けるようになります。 
-たとえ単純なHello Worldプログラムであっても、直接ObjCコンパイラを呼び出すよりも、GNUstep Makeを利用する方が楽ができます。+たとえ単純なHello Worldプログラムであっても、直接Objective-Cコンパイラを呼び出すよりも、GNUstep Makeを利用する方が楽ができます。
  
-したがって、ObjC+GNUstepのプログラミングを続けるのに次に越えなければならないハードルは、GNUstep Makeのルールを覚えることであると言えます。+したがって、Objective-C+GNUstepのプログラミングを続けるのに次に越えなければならないハードルは、GNUstep Makeのルールを覚えることであると言えます。
  
  
 ===== Ubuntu 24.04 LTS ===== ===== Ubuntu 24.04 LTS =====
-パッケージ__gnustep-make__がインストールされていることを確認します。 +パッケージgnustep-makeがインストールされていることを確認します。 
-このパッケージは__gnustep-devel__をインストールした場合、同時にインストールされています。+このパッケージはgnustep-develをインストールした場合、同時にインストールされています。
  
-__gnustep-make__には、GNUstep Makeの環境をアクティブにするスクリプトが含まれています。+gnustep-makeには、GNUstep Makeの環境をアクティブにするスクリプトが含まれています。
 そのシェルスクリプトを現在のシェルにソースすることで、GNUstep Makeが利用可能な状態になります。 そのシェルスクリプトを現在のシェルにソースすることで、GNUstep Makeが利用可能な状態になります。
  
行 22: 行 24:
 </cli> </cli>
  
-GNUstep自体をソースからインストールした場合は、__/usr/local/share/GNUstep/Makefiles/GNUstep.sh__などに配置されています。+GNUstep自体をソースからインストールした場合は、/usr/local/share/GNUstep/Makefiles/GNUstep.shなどに配置されています。
  
 シェルを立ち上げるたびに毎回このコマンドを実行する必要があります。 シェルを立ち上げるたびに毎回このコマンドを実行する必要があります。
 それほど長いコマンドではありませんが、面倒であればシェルのaliasを設定しておくと良いです。 それほど長いコマンドではありませんが、面倒であればシェルのaliasを設定しておくと良いです。
-__$HOME/.bashrc__などに次の1行を追加しておきます。+$HOME/.bashrcなどに次の1行を追加しておきます。
  
 <code shell> <code shell>
行 37: 行 39:
 [[helloworld|以前やったHello Worldプログラム]]をGNUstep Makeを使ってビルドしてみます。 [[helloworld|以前やったHello Worldプログラム]]をGNUstep Makeを使ってビルドしてみます。
 まず新たに適当な名前のディレクトリを作ります。 まず新たに適当な名前のディレクトリを作ります。
-その中に__hello.m__という名前のObjCのソースファイルを作成します。+その中にhello.mという名前のObjective-Cのソースファイルを作成します。
  
 __hello.m__: __hello.m__:
行 52: 行 54:
 </code> </code>
  
-同じディレクトリに__GNUmakefile__という名前のファイルを作成します。+同じディレクトリにGNUmakefileという名前のファイルを作成します。
  
 __GNUmakefile__: __GNUmakefile__:
行 68: 行 70:
   * common.makeというMakefileをインクルードしている   * common.makeというMakefileをインクルードしている
   * ''TOOL_NAME''という変数に''HelloWorld''とセットしている   * ''TOOL_NAME''という変数に''HelloWorld''とセットしている
-  * ''TOOL_NAME''にセットした名前に続けて''_OBJC_FILES''と加えた名前の変数に、ObjCのソースファイルをセットしている+  * ''TOOL_NAME''にセットした名前に続けて''_OBJC_FILES''と加えた名前の変数に、Objective-Cのソースファイルをセットしている
   * tool.makeというMakefileをインクルードしている   * tool.makeというMakefileをインクルードしている
  
 まずTOOLとは何かと疑問に思われることかと思います。 まずTOOLとは何かと疑問に思われることかと思います。
 これはプロジェクトのタイプを意味しています。 これはプロジェクトのタイプを意味しています。
-TOOLはコマンドラインツール(GUIではない)を意味しています((実際にはコマンドラインツールであってもGUIアプリケーションとしてビルドすることができるので、この分類の仕方はあまりなものではありません。))。+TOOLはコマンドラインツール(GUIではない)を意味しています((実際にはコマンドラインツールであってもGUIアプリケーションとしてビルドすることができるので、この分類の仕方はあまり確ではありません。))。
 コマンドラインツールであるならば、''TOOL_NAME''をセットした上で、tool.makeをインクルードすることをGNUstep Makeが要求しています。 コマンドラインツールであるならば、''TOOL_NAME''をセットした上で、tool.makeをインクルードすることをGNUstep Makeが要求しています。
 プロジェクトの種類は全部で16種類あり、コマンドラインツールはそのうちの一つです。 プロジェクトの種類は全部で16種類あり、コマンドラインツールはそのうちの一つです。
行 101: 行 103:
 </cli> </cli>
  
-__obj__というディレクトリの中に実行バイナリが生成されています。+objというディレクトリの中に実行可能バイナリファイルが生成されています。
  
   HelloWorld/   HelloWorld/
行 107: 行 109:
   ├── hello.m   ├── hello.m
   └── obj   └── obj
-      ├── HelloWorld+      ├── HelloWorld      ←生成された実行可能バイナリファイル
       └── HelloWorld.obj       └── HelloWorld.obj
           ├── hello.m.d           ├── hello.m.d
行 128: 行 130:
   * ''tool.make'' -> ''application.make''   * ''tool.make'' -> ''application.make''
  
-ObjCのソースコードは変更しなくてもいいのですが、せっかくなのでGUIアプリケーションらしいものに変更してみます。+Objective-Cのソースコードは変更しなくてもいいのですが、せっかくなのでGUIアプリケーションらしいものに変更してみます。
  
 適当な名前の新しいディレクトリを作成して、その中に次の2つのファイルを作成します。 適当な名前の新しいディレクトリを作成して、その中に次の2つのファイルを作成します。
  
-__hello.m__((このコードは[[https://home.gnustep.org/nicola/Tutorials/WritingMakefiles/node6.html|こちらのチュートリアル]]から拝借して若干の変更を加えました。)):+hello.(([[https://home.gnustep.org/nicola/Tutorials/WritingMakefiles/node6.html|こちらのチュートリアル]]から拝借して若干の変更を加えました。)):
  
 <code objc> <code objc>
行 150: 行 152:
  
 __GNUmakefile__: __GNUmakefile__:
- 
 <code makefile> <code makefile>
 include $(GNUSTEP_MAKEFILES)/common.make include $(GNUSTEP_MAKEFILES)/common.make
行 166: 行 167:
   └── hello.m   └── hello.m
  
-__HelloPanel__の中で''make''を実行します。+HelloPanelディレクトリの中で''make''を実行します。
  
 <cli> <cli>
行 182: 行 183:
 </cli> </cli>
  
-__HelloPanel.app____obj__の2つのディレクトリが作成されます。+HelloPanel.appobjの2つのディレクトリが作成されます。
 ソースツリーの状態は次のようになっています。 ソースツリーの状態は次のようになっています。
  
行 199: 行 200:
           └── hello.m.o           └── hello.m.o
  
-例1のTOOLのときは__obj__ディレクトリに実行バイナリが出力されましたが、今度は__HelloPanel.app__の中にあります。+例1のTOOLのときはobjディレクトリに実行可能バイナリファイルが出力されましたが、今度はHelloPanel.appディレクトリの中にあります。
 このアプリケーションを実行するには、コマンドラインに直接このファイル名をタイプするのではなく、**openapp**というランチャープログラムを使います。 このアプリケーションを実行するには、コマンドラインに直接このファイル名をタイプするのではなく、**openapp**というランチャープログラムを使います。
  
行 208: 行 209:
 少し補足しておきます。 少し補足しておきます。
  
-  * カレントディレクトリを示す「./」は**省略できません** => ''openapp HelloPanel.app''では起動しません +  * カレントディレクトリを示す「./」は**省略できません**。 => ''openapp HelloPanel.app''では**起動しません**。 
-  * 「.app」は省略可能です => ''openapp ./HelloPanel'' +  * 末尾の「.app」は省略可能です。 => ''openapp ./HelloPanel'' でも起動します。 
-  * 末尾に「/」がついていてもOKです => ''$openapp ./HelloPanel.app/''+  * 末尾に「/」がついていてもOKです。 => ''openapp ./HelloPanel.app/'' でも起動します。
  
 実行するとポップアップが表示されます。 実行するとポップアップが表示されます。
文書の先頭へ