1

システムにインストールするのではなく、プロジェクトディレクトリに保存されている外部ライブラリをリンクできるwscriptファイルを作成していますが、そのための最善の方法がわかりません。

現在、私は次のようなことをしています。

cfg.env.INCLUDES_A = [os.path.normpath('external/include')]
cfg.env.LIBPATH_A  = [os.path.normpath('external/win32/A/lib/x64')]
cfg.env.LIB_A      = ['A']
cfg.env.append_unique('COPY_LIBS', os.path.normpath('external/win32/A/lib/x64/A.dll'))

この場合、A.libのローカルコピーにリンクしてから、コードの後半でA.dllをインストールディレクトリ(ローカルの「dist」ディレクトリ)にコピーするようにマークします。ただし、システムにインストールされているライブラリについては、次のようにさらに何かを行うことができます。

cfg.check_cxx(uselib_store="GL", stlib="opengl32")

私の質問は、ローカルに保存された外部ライブラリを使用してこれと同様のことを行う方法があると思います。おそらく何かcheck_cxx(libpath="external/blah", ...)または何かのようなものですか?

4

2 に答える 2

5

あり、使用できるものがread_shlibあります。read_stlib

あなたはおそらくそれを次のように使うことができます:

bld.read_shlib('opengl32', paths='external/blah')
于 2013-02-07T15:53:34.203 に答える
2

私が見つけて現在使用している解決策は、次のことです。

cfg.env.LIBPATH.append(os.path.join(os.getcwd(), "external_lib_dir")
cfg.env.INCLUDES.append(os.path.join(os.getcwd(), "external_includes_dir")

次に、ライブラリの検索は次のように簡単にできます。

# OpenGL
if not cfg.check_cxx(uselib_store='GL', uselib='CORE TEST', mandatory=False, lib='GL'):
    cfg.check_cxx(uselib_store='GL', uselib='CORE TEST', mandatory=True, lib='opengl32')

最初の行は、ほとんどのLinuxシステムで機能するチェックを実行し、失敗しないように非必須として設定します。2行目は、両方の失敗が構成の失敗を引き起こすように必須として設定されたWindowsで機能するチェックを実行します。

この方法は私にとってはかなりうまく機能し、必要に応じてもう少し堅牢にすることができます(osxフレームワークなどの検出を追加します)が、さらに良い方法を知っている人がいる場合は、私に知らせてください!

編集:明らかに、プロジェクトのローカルディレクトリにOpenGLを保持することはおそらくないでしょうが、他のライブラリで動作するように変更することはそれほど悪くありません。

于 2012-08-23T04:32:55.233 に答える