2

Xcode、C++で非常に単純なHelloWorldアプリケーションを作成しました。

#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 )

コンパイルすると、Debugフォルダーにターミナルアプリケーションが作成されます。このアプリケーションを別のコンピューターに送信して実行しようとしましたが、他のコンピューターがセグメンテーション違反で応答します。

元のMacのOSは10.8.2で、ターゲットMacのOSは10.6.8です。

元のMacで作成したアプリケーションをターゲットMacで実行するにはどうすればよいですか?ありがとう

4

2 に答える 2

3

プログラムが実行されるMacOSXの最も古いバージョンをコンパイラに指示する必要があります。これを行うには-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は別の場所にある可能性があるため、正しいディレクトリに置き換えてください。

于 2012-12-15T18:46:52.223 に答える
1

私がする必要があるのは、CMakeLists.txtファイルにこの行を追加することだけでした。

SET(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)

助けてくれてありがとう。

于 2012-12-16T12:54:14.317 に答える