5 c++ macos xcode cmake unity-game-engine
我有一个Xcode项目,它构建一个包含库的包.我使用以下菜单创建了项目:
新项目 - >框架和图书馆 - >捆绑
为了给出更多的上下文,我想为Unity创建一个原生插件.目前标题非常简单,只包含标题和源文件.
我现在希望能够使用CMake生成类似的项目,我正在努力使其工作.
CMake文件我归结为:
cmake_minimum_required(VERSION 3.3)
project(Plugin)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES Plugin.cpp)
add_library(Plugin SHARED ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
上面的脚本构建了一个.dylib文件,我希望它能够构建一个.bundle文件.
我发现add_executable有一个MACOSX_BUNDLE选项,但它对我不起作用,因为我想捆绑一个库.还有一个名为BUNDLE的目标属性,但它似乎没有改变我的项目 - 它仍然会创建一个.dylib文件,当我希望得到一个.bundle文件.
我读过这个似乎暗示有效解决方案的问题,但我不能让它适用于我的项目.
任何帮助赞赏.
Jea*_*ier 10
使用CMake:
add_library(Plugin MODULE ${SRCS})
set_target_properties(Plugin PROPERTIES BUNDLE TRUE)
Run Code Online (Sandbox Code Playgroud)
将创建Plugin.bundle文件夹Contents/MacOS/Plugin
另外,根据Unity3D论坛上的这篇文章,只需将.dylib重命名为.bundle也可以.
在CMake中,这将是:
set_target_properties(Plugin PROPERTIES SUFFIX ".bundle")
Run Code Online (Sandbox Code Playgroud)
我不使用 CMake,但我为 iOS 和 OSX 构建了一个 Unity 本机库。我使用构建脚本通过调用 来为两个平台构建xcodebuild。它为 iOS 构建一个静态库,为 OSX 构建一个动态库,当将构建的库复制到位时,.dylib只需将其重命名为.bundle.
这是我的构建脚本,如果有帮助的话:
#!/bin/sh
PROJECT=UnityPlugin_UserDefaults.xcodeproj
CONFIGURATION=Release
BUILDDIR=build
OSXARCHIVEDIR=UserDefaults_OSX.xcarchive
IOSLIB=../Plugins/iOS/libUserDefaults.a
OSXLIB=../Plugins/UserDefaults.bundle
rm -rf $BUILDDIR $OSXARCHIVEDIR
for sdk in iphoneos iphonesimulator
do
xcodebuild -project $PROJECT -configuration $CONFIGURATION -scheme UserDefaults_iOS -derivedDataPath $BUILDDIR -sdk $sdk build || exit 2
done
mkdir -p $(dirname $IOSLIB)
rm -f $IOSLIB
xcrun lipo \
$BUILDDIR/Build/Products/$CONFIGURATION-iphoneos/libUserDefaults.a \
$BUILDDIR/Build/Products/$CONFIGURATION-iphonesimulator/libUserDefaults.a \
-output $IOSLIB \
-create || exit 3
echo Created $IOSLIB:
file $IOSLIB
xcodebuild -project $PROJECT -configuration $CONFIGURATION -scheme UserDefaults_OSX -derivedDataPath $BUILDDIR -archivePath $OSXARCHIVEDIR -sdk macosx archive || exit 4
mkdir -p $(dirname $OSXLIB)
cp $OSXARCHIVEDIR/Products/usr/local/lib/libUserDefaults.dylib $OSXLIB || exit 5
echo Created $OSXLIB:
file $OSXLIB
rm -rf $BUILDDIR
Run Code Online (Sandbox Code Playgroud)
Xcode 项目包含每个平台的目标,以及用于定义要构建的方案。