OS X 10.8, llvm, OpenMP avec CMake

J'ai juste mis à jour pour OS X 10.8 "Mountain Lion" et je commence à regretter de l'avoir fait.

Je ne suis plus capable de construire mon (simple) du code parallèle qui utilise OpenMP.

En regardant ici et là, j'ai compris qu'Apple n'est pas plus à l'aide de 'gcc' mais 'llvm' - très probablement due à des problèmes d'homologation. Malheureusement 'llvm" n'a pas (encore?) soutien OpenMP.

Je ne peux pas croire de nombreux programmes basés sur OpenMP ne sera pas exécuté plus sur OS X, donc ma question est: comment puis-je activer OpenMP dans la Montagne du Lion?


Après la lecture de l'excellente réponse de Hristo Iliev, je pense que je manque de plus que je pensais au départ.

Je ne suis pas à l'aide de XCode. Le bâtiment est basée sur CMake et faire/gcc. Hier, j'ai installé gcc 4.2 via macports, mais - comme aujourd'hui - mon code est encore en forme source, parce que - pour des raisons étranges - je ne suis pas en mesure de changer la compilation de gcc (même les erreurs liées à OpenMP).

Le problème maintenant est que CMake continue d'utiliser le compilateur llvm.
Dans la racine CMakeLists.txt j'ai ajouté les deux lignes suivantes:

set(CMAKE_C_COMPILER "/opt/local/bin/gcc-apple-4.2")  
set(CMAKE_CXX_COMPILER "/opt/local/bin/gcc-apple-4.2")

et j'ai aussi ajouté deux environnements variables:

export CXX=/opt/local/bin/gcc-apple-4.2
export CC=/opt/local/bin/gcc-apple-4.2

Quand CMake essaie de trouver OpenMP ( FIND_PACKAGE(OpenMP) ) j'obtiens le résultat suivant:

-- The compiler is /opt/local/bin/gcc-apple-4.2
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
[...]
CMake Error at /opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS)
Call Stack (most recent call first):
/opt/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291    (_FPHSA_FAILURE_MESSAGE)
/opt/local/share/cmake-2.8/Modules/FindOpenMP.cmake:159 (find_package_handle_standard_args)
demo/CMakeLists.txt:8 (FIND_PACKAGE)

J'ai essayé d'exécuter /opt/local/bin/gcc-apple-4.2 manuellement et il échoue en raison d'un manque de libgomp.

Ce qui concerne

Vous pouvez simplement installer gcc 10.8: stackoverflow.com/questions/9353444/...
J'ai trouvé cette question, mais il était lié à l'installation des outils de ligne de commande. Maintenant j'ai vu la réponse liée à l'installation de la vraie gcc. Je vous remercie.
Vous n'avez pas à ajouter de la GCC 4.2 de macports, car il est livré avec XCode outils de ligne de Commande. Vous n'avez qu'à installer en plus de l'interface graphique. Encore, que vous n'avez pas utiliser XCode, je recommande fortement que vous construisez votre propre GCC 4.7.2 - la dernière et la plus grande avec le soutien de OpenMP 3.1 caractéristiques 🙂
J'ai installé XCode et ses outils de ligne de commande avant de commencer à compiler mon code. Je suppose qu'il y a une façon de passer le compilateur par défaut (je vais vérifier).
J'ai téléchargé le code source de gcc 4.7.2. Le compilateur doit-je utiliser?

OriginalL'auteur Antonio Sesto | 2013-02-28