見切り発車

とりあえずかきとめたい

C++ をclang で解析するときに情報をvcxproj から取得する方法

この記事はC++ Advent Calendar 2023 の5 日目です。 前に書いたものを簡単に流用しやすくなるように意識してまとめなおしたものです。 C++ でリフレクションやシリアライズを行うためにコードを解析したくなる場合があると思います。 その時の選択肢としてc…

MSBuild のカスタムタスクでファイルを生成してビルドに含める

vcxproj に含まれる情報を取得してlibclang で処理する方法を調べていますが 今回は生成したファイルをビルドに含める方法について説明します。 前回:MSBuild でvcxproj に独自の処理を追加する - 見切り発車 独自の処理を作成する 前回の記事では、独自の…

MSBuild でvcxproj に独自の処理を追加する

vcxproj からソースファイル名やインクルードパス、プリプロセッサマクロ定義などを取り出してlibclang に渡して処理するという目的のため試行錯誤しているのですが、 断片的な情報でハックするようなやり方ではなかなか思ったような結果にならないため改め…

ClangCL のexe の差し替えの続き

2022-12-01 追記: 後から調べた以下の記事のほうがまっとうな手法です。 uyamae.hatenablog.com Visual Studio のClangCL ツールセットのコンパイラを差し替える - 見切り発車 Visual Studio 標準のClang/LLVM のカスタマイズ方法を試す - 見切り発車 libcla…

MSBuild API を試している途中

MSBuild から呼び出されるコンパイラの実行ファイルを差し替えてコンパイルに必要な情報を横取りしてやろうと思っていましたがインクルードパスが渡されてこないようなのでもう少しMSBuild を掘り下げてみることにしました。 MSBuild はMicrosoft.Build とい…

Visual Studio 標準のClang/LLVM のカスタマイズ方法を試す

概要 Microsoft 公式の「Visual Studio プロジェクトでの Clang/LLVM のサポート」によるclang-cl.exe の差し替えができるか試しました。 リンク先の内容が難なく理解できるのであれば問題ありませんがところどころ明確でない点があったので書きとめます。 …

Visual Studio のClangCL ツールセットのコンパイラを差し替える

動機 そもそもの動機は、libclang でソースコードを解析するときに渡すオプションの類をVisual Studio のvcxproj から引っ張り出せないか、というものです。 vcxproj はxml 形式のテキストファイルで、中を覗くとコンパイルオプションなどが含まれているのが…

GPD WIN 4 を買わない理由をつぶした話

通勤中に電車の中でちょっとプログラムを試したりするためのUMPC をずっと求めていたのですが先日Amazon で値引きされていたのでGPD WIN 4 (16GB/1TB)を購入しました。 高額の買い物になるので、ネットでよく見かける 購入しない理由が金額なら買え、購入す…

Direct3D 12 でのシェーダーの動的リンク

解決したこと Direct3D 12 のシェーダーで関連要素の組み合わせ(法線マップの有無、PBR パラメータの有無など) ごとのシェーダーを生成する方法としてコンパイル済みシェーダーをアプリケーション実行時にリンクする方法について調べました。 動機 いろいろ…

CRC32 のテーブルを利用した最適化のメモ

解決したこと CRC32 を計算するプログラムをテーブルを利用して最適化する場合の個人的な引っ掛かりポイントについて再確認しました。 元々の手順とテーブル利用の関連付け データテーブルの計算方法 環境 Windows 10 Visual Studio 2019 解決方法? CRC32 そ…

Visual C++ でのweak symbol

解決したこと 他のコンパイラでは __attribute__((weak)) などと指定するweak symbol をVisual C++ で使用する方法について調べました。 環境 Windows 10 Visual Studio 2019 解決方法 weak symbol はリンク時に他に同じ名前のシンボルが見つからなければリ…

CMake でWindows SDK バージョンを指定する方法

解決したこと CMake で生成したvcxproj のWindows SDK バージョンが10.0.18362.0 になっていたのを10.0.19041.0 になるようにしました。 環境 Windows 10 (バージョン 1903, ビルド 18362.959) Visual Studio 2019 CMake 3.18 解決方法 CMAKE_SYSTEM_VERSION…

C++ のダウンキャストについて考える

今どきのゲーム開発環境を実現しようとするとどうしてもC++ でダウンキャストが必要になってきます。C++ でダウンキャストを行うにはdynamic_cast を使用するのが通常の手段ですがなかなか重い処理なのでゲームではあまり使いたくない選択肢です。static_cas…

Return of WPF

Cinder+ImGui をすこーし触った結果、どうにも日本語の取り扱いが不自由な感じで普通のツールを作るのにはちょっとばかり向いてないかなーという結論に至ってしまいました。 というわけで改めてWPF の復習をすることに。 ツールを作るときにフォームを使いそ…

Cinder-ImGui

ImGui による開発環境としてcinder をインストールしてプロジェクトを作成してみときに引っかかったところの話です。cinder (https://libcinder.org/) はhttps://github.com/cinder/Cinder からチェックアウト可能です。boost を利用しててgit clone すると…

WPF vs ImGui

去年はせっかく頑張ってWPF に取り組んでたんだけど後半くらいから時間も取れない仕事に活かせるアテもなくなったということですっかり滞ってしまいました。ツールを作る機会は常にあるので少しずつでも進めていきたいのだけども開発の傍らで内製ツールを作…

ビットマップフォントをなんとなく縁取り

お仕事でそういう需要があったのです。縁取り…アウトラインのデータが取れるならパスに沿ってラインを描くのがよさそうなんだけど、ビットマップだと…?たぶん、縁取りって元の文字の線を太らせたものを下に敷くのでいいのでは?問題はどうやって文字を太ら…

スクリプトエディタの枠組みっぽいものができた

ちょっと進んでなんだかそれらしい感じの枠組みができました。まだ見た目だけです。 一番外側がDockPanel で左にスクリプト名のListBox, 中央に選択されたスクリプトが表示されます。 <DockPanel> <ListBox ItemsSource="{Binding ScriptList}" DockPanel.Dock="Left" x:Name="ScriptList"> <ListBox.ItemTemplate> <DataTemplate DataType="local:ScriptData"> </datatemplate></listbox.itemtemplate></listbox></dockpanel>

ItemsControl でリストの内容を表示する

独自スクリプトのエディタを作ろうと思ってます。スクリプトはだいたいこんな感じ。 コマンド1 パラメータ1,パラメータ2,パラメータ3 コマンド2 パラメータ1,パラメータ2,パラメータ3,パラメータ4 コマンド3 ...パラメータの部分のUI はこんな見た目。パラメ…

クリックしたら編集できるようになるラベルがつくれた

ずいぶんと遠回りをしてしまった気がします。Label あるいはTextBlock をクリックしたらTextBox に置き換えることばかり考えてましたが、TextBox の見た目をTextBlock に偽装することでおおむね望み通りの表現ができることに気づきました。 <TextBox Text="にゃー"> <TextBox.Style> <Style TargetType="TextBox"> <Setter Property="VerticalAlignment" Value="Center" /> <Style.Triggers> </style.triggers></setter></textbox.style></textbox>

クリックしたら編集できるようになるラベルがつくりたい

某社のゲームエンジンのGUIがWPFと聞いて何度か挫折したWPFに再チャレンジしてはやひと月以上が経過してしまいました。 C#をやる目的は仕事で使うツールの作成がメインなので実際に今欲しいツールを作りながら学びたいと思うのですけども、「パラメータ名:…