2013-02-27 5 views
5

Я хочу сгенерировать исполняемый файл в файле .bundle на Mac OSX 10.6.8 с использованием CMake. Мой файл CMakeLists.txt выглядит следующим образом:Создание файла .bundle с CMake на 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) 

Тогда я называю CMake:

CMake -G"Xcode" . 

Однако, когда я скомпилировать эту программу с Xcode 3.2.1, я постоянно получаю TEST.app файла вместо TEST.bundle файла.

Что я здесь делаю неправильно?

+0

Информация на http://www.cmake.org/Wiki/CMake:Bundles_And_Frameworks предполагает, что «MACOSX_BUNDLE» указывает, что цель используется для создания связанного приложения (например, Test.app, а не инструмента командной строки Test), а не пакет '.bundle'. – bdash

+0

Да, действительно. Я больше рассматриваю возможность .bundle для плагинов на MAC OSX. – Korchkidu

ответ

6

Используйте свойство target BUNDLE_EXTENSION, чтобы получить другое расширение, чем значение по умолчанию. http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:BUNDLE_EXTENSION

Кроме того, я думаю, что .app - это только значение по умолчанию для исполняемых целей. Для целей библиотеки или модуля, значение .bundle должно быть значением по умолчанию.

Вы пытались использовать библиотечную цель?

+2

Да, я, наконец, преуспел. Это набор различных команд с BUNDLE_EXTENSION и add_library (вместо add_executable). Спасибо за вашу помощь. – Korchkidu

+0

@Korchkidu Не могли бы вы сообщить мне точные команды и порядок, в которых вы их написали. Пример будет великим. – crezefire

1

Для тех, кто работает по этому и пытается построить библиотеку .bundle, это работает для меня на CMake 3.0:

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

Ключ использовать MODULE не SHARED. По какой-то причине CMake игнорирует свойство BUNDLE.

Смежные вопросы