環境変数を設定する方法と、MonoMacアプリケーションでネイティブフレームワークをバンドルする方法の2つの質問に分けましょう。
環境変数の設定このようなあなたは、アプリケーションのInfo.plist
のLSEnvironment
セクションに環境変数を設定することができ
、:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.TableViewTest</string>
<key>CFBundleName</key>
<string>TableViewTest2</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>10.6</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>LSEnvironment</key>
<dict>
<key>Foo</key>
<string>Bar</string>
</dict>
</dict>
</plist>
それはのように思えるが、手動で一度そのファイルを編集して追加する必要がありますするには少なくとも1つの環境変数。
ファイルはMonoDevelopによって自動的に作成されるため、LSEnvironment
セクションを追加するだけです。
その後、MonoDevelopで編集することができます。プロジェクトオプション「Mac OS Xアプリケーション」、「詳細設定」に移動します。 MonoMacアプリケーションで
バンドルネイティブフレームワーク
あなたはある、それを行うにははるかに簡単かつきれいな方法があります、MonoMacアプリケーションでネイティブフレームワークをバンドルするすべての環境変数を設定する必要はありません
小さなtest applicationsを作成しました。このフレームワークは、ネイティブObjective CアプリケーションとMonoMacの両方にフレームワークをバンドルしています。
まず、フレームワークをアプリケーションにバンドルする必要があります。現在、MonoDevelopでこれを自動的に行う方法はないので、手動でファイルをコピーするか、ビルド後のスクリプトを使用する必要があります(私の例ではcopy-framework.sh
を参照)。
フレームワークをYourApp.app/Contents/Frameworks/YourFramework.framework
に入れることをお勧めします。これはXCodeがそれを処理する方法です。 Apple's Documentationも参照してください。
アプリケーションバンドル内のライブラリを参照するには、 `@executable_path '(dyld man pageを参照)を使用できます。
<dllmap>
を使用してapp.configファイルを作成することをお勧めします。コードにパス名を入れる必要がないため、フレームワークのバージョンを簡単に変更できます。例えば:あなたのフレームワーク内の実際のライブラリがlib
で始まるか.so
/.dylib
で終わる場合
<configuration>
<dllmap dll="TestFramework" target="@executable_path/../Frameworks/TestFramework.framework/TestFramework" />
</configuration>
することは、あなたは(上記のdllmapは、例えば、TestFramework.framework/libTestFramework.dylib
ファイルはありません)その名前を指定する必要があります。これはMonoのバグです。私はただ修正しました。
'System.Environment.SetEnvironmentVariable'がMonoでは動作しないと言っていますか? –