OSLwright は、C/C++オープンソースライブラリ・ビルダーです。 Windows向けのC/C++ネイティブ・ライブラリをスクラッチビルドします。
- Windows向けにC/C++オープンソースライブラリをビルドします。
- GUIで簡単にパッケージのビルドが出来ます。
- いくつかパッケージはCMakeConfigを追加しています。pkg-configは相対パスへ変更済み
- 気まぐれで商業利用に制限の少ないライセンスのパッケージを収集しています。
- ソースファイルをダウンロードしてスクラッチ・ビルドするので、バージョン管理やソースの追跡が容易です。
- 特に理由がなければ、vcpkg をお勧めします。
次のアプリケーションをインストールしてください。
- Python 3.12 or higher https://www.python.org/downloads/
- Microsoft Visual Studio 2022 or higher https://visualstudio.microsoft.com/ja/downloads/
- CMake 3.30 or higher https://cmake.org/download/
- Git for Windows https://gitforwindows.org/
- Git Large File Storage https://git-lfs.com/
- 7zip https://www.7-zip.org/download.html
-
Python, VisualStudioなどOSLwrightが依存するアプリケーションをインストールします。
-
OSLwrightを起動します。
python仮想環境が作成されOSLwrightが起動します。> launch-oslwright.bat -
追加ツールダイアログが表示された場合は「Install tools」ボタンを押してください。
-
ビルドする対象のパッケージを選択します。
-
[Build all] を押すと、選択されたパッケージが順次ビルドされます。
-
ビルドされたパッケージは、<OSLwright ディレクトリ>/dist/以下にインストールされます。
パッケージを使用するには、いくつかの方法があります。
開発メンバーで開発環境を共有する場合に適しています。
- 使用したいパッケージフォルダを<開発フォルダ>/3rdparty以下にコピーする。
> cd <workdir> > xcopy <OSLwright>\dist 3rdparty /E /H /C /I - <OSLwright ディレクトリ>の cmake フォルダを<開発フォルダ>へコピーする。
> cd <workdir> > xcopy <OSLwright>\cmake cmake /E /H /C /I - CMakeLists.txt に oslwrite module をロードするコードを記述する
if(MSVC) if (NOT CMAKE_TOOLCHAIN_FILE) # oslwrite module load include(${CMAKE_SOURCE_DIR}/cmake/oslwright.cmake) endif() if(OSLW_FRAMEWORK_PATH) # oslwrite framework path set(CMAKE_PREFIX_PATH "${OSLW_FRAMEWORK_PATH}") endif() endif()
- CMakeLists.txtに、CMAKE_PREFIX_PATHの設定を記述する
if(OSLW_FRAMEWORK_PATH) # oslwrite framework path set(CMAKE_PREFIX_PATH "${OSLW_FRAMEWORK_PATH}") endif()
- オプションにCMAKE_TOOLCHAIN_FILEを設定しcmake コマンドを実行する
> cmake.exe -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE="<OSLwright>/cmake/oslwright.cmake" -S . -B .\build_64
DLLが再帰的な依存関係を有する場合は、cmakeは参照先のDLLを発見できません。
依存するDLLのコピーをサポートする関数を定義しました。
ターゲットに依存するDLLを$<TARGET_FILE_DIR:${target}>へコピーする
oslw_copy_depdll(TARGET <target> target name
[PATH <directories>] Semicolon-separated list of OSLW's package directories.
[EXCLUDE <dll-list>] exclude dll list
)Example
# copy external dlls to bindir.
oslw_copy_depdll(
TARGET ${target_name}
)ターゲットに依存するDLLをインストールする
oslw_install_depdll(TARGET <target> target name
[DESTINATION <dir>] Specify the directory which files will be installed.
[COMPONENT <component>] Specify an installation component name.
[PATH <directories>] Semicolon-separated list of OSLW's package directories.
[EXCLUDE <dll-list>] exclude dll list
)Exmaple
# install external dlls
oslw_install_depdll(
TARGET ${target_name}
DESTINATION bin
COMPONENT Application
)DLLが依存するDLLのパスを検索する。
oslw_find_depdll(<VARNAME> variable is assigned the result.
DLLS <dll paths> Semicolon-separated list of DLLs path.
[PATH <directories>] Semicolon-separated list of OSLW's package directories.
[EXCLUDE <dll-list>] exclude dll list
[WORKDIR <directory>] workinng directory
)Exmaple
# find dependent dlls and copy
set(PLUGINS_DLLS a.dll b.dll)
oslw_find_depdll(DEPENDENT_DLLS
DLLS ${PLUGINS_DLLS}
WORKDIR ${PLUGINS_PATH}
)
add_custom_command(TARGET ${target_name} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${DEPENDENT_DLLS}
"$<TARGET_FILE_DIR:${target_name}>"
COMMAND_EXPAND_LISTS)
OSLwrightは、各パッケージをリリースビルドしています。MSVCランタイムライブラリのコンパイルオプションはMultiThreadedDLL(/MD)に設定されます。
開発するアプリケーションにおいて、MSVCランタイムライブラリのコンパイルオプションの設定は、リリース・デバックの両方ともにMultiThreadedDLL(/MD)へ変更してください。
インストールされたパッケージのファルダ名は、次の命名規則に従います。
<package>-<version>[-<arch>][-<vc-version>][-<vc-runtime>][-<cu-versoin>][-static][-debug|-release]
| Folder name | Mean |
|---|---|
| <package>-<version>-x64-vc144-md | A 64-bit build with either both release and debug configurations or release only, and either both shared and static libraries or shared libraries only. |
| <package>-<version>-x64-vc144-md-cu124 | with cuda |
| <package>-<version>-x64-vc144-md-static | static library only |
| <package>-<version>-x64-vc144-md-release | release only |
| <package>-<version>-x64-vc144-md-debug | debug only |
| <package>-<version> | header only |
OSLwright のライセンスは MIT License です。
サンプルソースコードのライセンスは MIT License と CC0 1.0 Universal です。
各パッケージは、それぞれのライセンスに従ってください。
本ソフトウェアおよび生成物について、作者は一切の責任を負いません。利用による結果はすべて利用者の責任とします。
