我在Xcode中创建了一个非常简单的Hello World应用程序,C++:
#include <iostream>
using namespace std;
int main(int argc, char * argv[])
{
cout << "Hello World!" << endl;
return 0;
}
Xcode 项目是使用 Cmake 创建的:
cmake_minimum_required(VERSION 2.6)
set (CMAKE_VERBOSE_MAKEFILE ON)
PROJECT ( Prueba )
SET ( GedcomToHtml_SRCS
main.cpp
)
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${PROJECT_SOURCE_DIR} )
#enable all warnings
ADD_DEFINITIONS ( -Wall )
#Here we instruct to build sample executable from all the source files
ADD_EXECUTABLE ( Prueba ${GedcomToHtml_SRCS}
)
#last thing that we need to do is to tell CMake what libraries our executable needs
#Luckily FIND_PACKAGE preparted QT_LIBRARIES variable for us
TARGET_LINK_LIBRARIES( Prueba )
当我编译它时,在调试文件夹中创建了一个终端应用程序。我已将此应用程序发送到另一台计算机并尝试运行它,但另一台计算机响应分段错误。
原始 Mac 的操作系统为 10.8.2,目标 Mac 的操作系统为 10.6.8。
如何在目标 Mac 中运行在原始 Mac 中创建的应用程序?谢谢
您应该指示编译器运行该程序的最早Mac OS X版本是什么。为此,您可以在您的情况下使用 -mmacosx-version-min=10.6
,因为它也应该在 10.6.8 上运行。此外,您应该使用 -isysroot <10.6 SDK directory>
标志设置标头的根目录。
因此,在CMake中,这相当于以下内容:
SET(SDK "10.6")
SET(DEV_SDK "/Developer/SDKs/MacOSX${SDK}.sdk")
ADD_DEFINITIONS(
-isysroot ${DEV_SDK}
-mmacosx-version-min=${SDK}
)
SET(
CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -isysroot ${DEV_SDK} -mmacosx-version-min=${SDK}"
)
SET(
CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -isysroot ${DEV_SDK} -mmacosx-version-min=${SDK}"
)
SET(
CMAKE_MODULE_LINKER_FLAGS
"${CMAKE_MODULE_LINKER_FLAGS} -isysroot ${DEV_SDK} -mmacosx-version-min=${SDK}"
)
请注意,您的 SDK 可能位于其他位置,因此请替换正确的目录。
原来我需要做的就是将这一行添加到我的 CMakeLists.txt 文件中:
套装(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
感谢您的帮助。