2013-02-27 15 views
5

Ich möchte eine ausführbare Datei in .bundle Datei auf mit CMake generieren. Meine CMakeLists.txt Datei wie folgt aussieht:Erstellen einer .bundle-Datei mit CMake auf MAC OSX

cmake_minimum_required(VERSION 2.8) 
PROJECT(TESTProject) 
SET(MACOSX_BUNDLE_BUNDLE_NAME TEST) 
ADD_EXECUTABLE(TEST MACOSX_BUNDLE main.cpp) 
SET_TARGET_PROPERTIES(TEST PROPERTIES MACOSX_BUNDLE TRUE) 

Dann rufe ich CMake:

CMake -G"Xcode" . 

Allerdings, wenn ich dieses Programm mit Xcode 3.2.1 kompilieren, ich ständig eine TEST.app Datei statt einer TEST.bundle Datei.

Was mache ich hier falsch?

+0

Die Informationen unter http://www.cmake.org/Wiki/CMake:Bundles_And_Frameworks schlagen vor, dass "MACOSX_BUNDLE" angibt, dass das Ziel verwendet wird, um eine gebündelte Anwendung zu erstellen (z. B. Test.app und nicht das Befehlszeilentool Test), anstatt ein '.bundle'-Bündel. – bdash

+0

Ja, tatsächlich. Ich denke mehr über .bundle für Plugins auf MAC OSX nach. – Korchkidu

Antwort

6

Verwenden Sie die BUNDLE_EXTENSION-Zieleigenschaft, um eine andere Erweiterung als die Standardeinstellung zu erhalten. http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:BUNDLE_EXTENSION

Auch ich denke, .app ist nur der Standard für ausführbare Ziele. Für Bibliotheks- oder Modulziele sollte .bundle der Standardwert sein.

Haben Sie mit einem Bibliotheksziel versucht?

+2

Ja, das ist mir endlich gelungen. Es ist eine Menge verschiedener Befehle mit BUNDLE_EXTENSION und add_library (anstelle von add_executable). Danke für Ihre Hilfe. – Korchkidu

+0

@Korchkidu Können Sie mir bitte die genauen Befehle und die Reihenfolge, in der Sie sie geschrieben haben, wissen lassen. Ein Beispiel wäre großartig. – crezefire

1

Für alle, die über diese laufen und versuchen, eine Bibliothek .bundle zu bauen, ist das für mich auf CMake 3.0:

add_library(Foo MODULE ${SOURCES} ${HEADERS}) 
set_target_properties(Foo PROPERTIES BUNDLE TRUE) 

Der Schlüssel ist MODULE nicht SHARED zu verwenden. Aus irgendeinem Grund ignoriert CMake die BUNDLE Eigenschaft andernfalls.