3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mind7とMind8 どちらでもビルドできる環境をVSCodeで構築

Posted at

はじめに

諸般の流れからVSCodeでMind 7.5 for WindowsのアプリケーションソースがMindコンパイラでビルドできる環境に加えてC#のアプリケーションソースがビルド、デバッグ実行できる環境をつくりましたが、その目的は謎につつまれたまま、あるいはその記事のMind開発者@killyさんのコメントですでにバレているとも言えつつ、今回はせっかくなので?Mindだけの環境を作ってみます。

前提条件

Windows11 Pro 22H2
VSCode(Visual Studo Code) 1.86.1
Mind Version 7.5 for Windows
Mind Version 8.07 for Windows

Mindはそれぞれのバージョンのパスが構成されていることを前提とします。

VSCodeの拡張機能

C/C++ for Visual Studio Code 1.18.5 Microsoft
C/C++ Extension Pack 1.3.0 Microsoft

C/C++のデバッガは直接使わないのですが、Mindアプリケーションをデバッグ実行でローンチするために流用しています。

Mind7環境の構成

Mind7アプリがビルドできる環境を構成します。下記のサンプルソースファイルを作成します。

hello7.src
メインとは
    「Hello, World! by mind7」を 表示して 改行すること。

tasks.json

tasks.jsonから前回記事でC#が生成した部分を削除して下記の状態とします。

tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "mind7 build",
            "type": "process",
            "command": "C:/mind7/bin/mind.exe",
            "args": [
                "${workspaceFolder}/hello7.src",
                "C:/mind7/lib/file"
            ],
            "problemMatcher": []
        }
    ]
}
    

launch.json

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "mind7 Launch (console)",
            "type": "cppvsdbg",
            "request": "launch",
            "preLaunchTask": "mind7 build",
            "program": "${workspaceFolder}/hello7.exe",
            "args": [],
            "cwd": "${workspaceFolder}",
            "console": "integratedTerminal"
        }
    ]
}        

今回はプレローンチタスクとしてビルドタスクを設定しました。

Mind8環境の構成

続いてMind8アプリがビルドできる環境を構成します。下記のサンプルソースファイルを作成します。

hello8.src
メインとは
    「Hello, World! by mind8」を 表示して 改行すること。

tasks.json

tasks.jsonにMind8のタスクを追記して下記の状態とします。

tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "mind7 build",
            //Mind7用の記述略
        },
        {
            "label": "mind8 build",
            "type": "process",
            "command": "C:/pmind/bin/mind.exe",
            "args": [
                "${workspaceFolder}\\hello8.src",
                "C:\\pmind\\lib\\file"
            ],
            "problemMatcher": []
        }        
    ]
}
    

Mind8の場合、args引数のパス区切り文字で/バックスラッシュはNGでした。\を2度打ちしてエスケープしてください。
Mind8コンパイラが読み込むライブラリのパス区切り文字がバックスラッシュの場合は下記のエラーが出力されます。

コンパイルエラー:ファイル名の指定が誤りです。

launch.json

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "mind7 Launch (console)",
            //Mind7用の記述略
        },
        {
            "name": "mind8 Launch (console)",
            "type": "cppvsdbg",
            "request": "launch",
            "preLaunchTask": "mind8 build",
            "program": "${workspaceFolder}/hello8.exe",
            "args": [],
            "cwd": "${workspaceFolder}",
            "console": "integratedTerminal"
        }
    ]
}        

これで準備完了です。

VSCodeの[実行とデバッグ]から実行

VSCodeのメニューからターミナル→タスクの実行を選択します。下図のようにtasks.jsonの内容が展開されているのを確認します。

vscodec24.png

VSCodeの[実行とデバッグ]のプルダウンを展開すると「mind7 Launch (console)」と「mind8 Launch (console)」が表示されているのを確認します

vscodec25.png

「mind7 Launch (console)」の結果

ターミナルに下記の実行結果が出力されます。

Hello, World! by mind7
PS C:\developments\vscode\pmind\hello> 

デバッグコンソールに下記のような出力が表示されました。

Loaded 'C:\developments\vscode\pmind\hello\hello7.exe'. Module was built without symbols.
Loaded 'C:\Windows\SysWOW64\ntdll.dll'. 
Loaded 'C:\Windows\SysWOW64\kernel32.dll'. 
Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. 
Loaded 'C:\Windows\SysWOW64\advapi32.dll'. 
Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. 
Loaded 'C:\Windows\SysWOW64\sechost.dll'. 
Loaded 'C:\Windows\SysWOW64\bcrypt.dll'. 
Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. 
The program '[11144] hello7.exe' has exited with code 0 (0x0).

「mind8 Launch (console)」の結果

ターミナルに下記の実行結果が出力されます。

Hello, World! by mind8
PS C:\developments\vscode\pmind\hello> 

デバッグコンソールに下記のような出力が表示されました。

Loaded 'C:\developments\vscode\pmind\hello\hello8.exe'. Module was built without symbols.
Loaded 'C:\Windows\SysWOW64\ntdll.dll'. 
Loaded 'C:\Windows\SysWOW64\kernel32.dll'. 
Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. 
Loaded 'C:\Windows\SysWOW64\sechost.dll'. 
Loaded 'C:\Windows\SysWOW64\bcrypt.dll'. 
The program '[10668] hello8.exe' has exited with code 0 (0x0).

おわりに

Mind7とMind8でロードされるライブラリ構成が若干異なるのが興味深いですね。

3
3
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?