Question

Je recherche une solution qui me permettrait de coder pour Linux et Windows en C ++.

Sous Windows, j'utilise Visual Studio (j'ai essayé d'autres solutions sous Windows mais je travaille avec DirectX et pour autant que je sache, c’est la meilleure solution).

Sous Linux, j'utilise NetBeans (ce que j'aime beaucoup).

Mon problème est que je souhaite que le projet soit indépendant de Visual Studio et de NetBeans.

Pendant un moment, j'ai pensé que CMake était la solution, mais le processus d'apprentissage est trop important, je préfère passer mon temps à coder qu’à apprendre toutes les astuces avec CMake. Je me suis donc contenté de Boost.Jam . Cela fonctionnait bien sous Linux mais avec Visual Studio.

J'ai créé un petit programme Hello World sous Windows. J'ai créé un projet Visual Studio Makefile et sa compilation et sa liaison sont correctes. Je peux exécuter le fichier exécutable mais pas à partir de Visual Studio, qui ne le trouve pas (peu importe ce que je fais). Je ne peux pas déboguer non plus. De plus, je ne peux pas voir le message d'erreur de compilation quand j'en reçois un. Tout ce que je peux voir dans Visual Studio, c'est qu'une action de makefile est en cours et qu'il y a une erreur à ce sujet (même si le programme est créé et qu'il fonctionne correctement).

Cela fait un moment que je navigue dans la documentation Boost.Jam, mais soyons honnête: c’est plutôt pauvre (il n’est pas étonnant que peu de gens l’aient entendue) ou je ne suis pas très bien adapté à ce travail (ce qui signifie stupide lol mais pourtant pourquoi si peu de gens en ont entendu parler).

J'ai trois questions:

J'aimerais savoir si quelqu'un a entendu parler d'un projet utilisant Boost.Jam avec Visual Studio? Si oui, puis-je l'examiner?

Existe-t-il un outil permettant une véritable intégration de Visual Studio?

Combien de personnes pensent qu'apprendre à utiliser CMake (correctement) prend beaucoup de temps? Des astuces pour accélérer?

Était-ce utile?

La solution

Prenez le temps d'apprendre à CMake et d'accélérer le processus d'apprentissage. Achetez / lisez "Mastering CMake 4th Edition"

Si vous rencontrez des problèmes, vous devez utiliser la liste de diffusion de CMake, à savoir actif (environ 600 messages en août 2009)

Autres conseils

Qt et Qt Creator semblent être une bonne solution à votre problème. qmake peut générer des fichiers vcproj et des makefiles natifs Linux.

Si je codais en C ++ pour Windows et Linux, je coderais pour Linux et intégrerais l'application à une configuration minimale de cygwin.

Êtes-vous sûr de regarder la bonne documentation? Vous avez dit "Boost.Jam", il y a donc de fortes chances que vous cherchiez une solution fausse. Consultez la documentation Boost.Build

.

Je suis absolument sûr que de nombreuses personnes ont utilisé Boost.Build dans Visual Studio sans problèmes. Pouvez-vous essayer d'exécuter le programme sur la ligne de commande - peut-être y a-t-il un message d'erreur que Visual Studio décide de ne pas afficher?

Je recommanderais également CMake. C'est un peu effrayant au début, mais vous vous y adaptez progressivement. Il est encore assez facile pour un débutant d’écrire des scripts multi-plateformes, même s’ils ne sont pas jolis ou optimaux comme le ferait un expert. L’intégration avec CppUnit (pour les tests unitaires) et Hudson (build mgt) a permis de configurer une infrastructure d’intégration continue en un rien de temps.

Je ne connais pas grand-chose à NetBeans, mais si vous souhaitez développer à la fois Windows et Linux et utiliser Visual Studio sous Windows, alors CMake est le seul choix sensé , vraiment. Je l'utilise depuis plusieurs années maintenant et je ne peux pas commencer à deviner combien de temps cela m'a permis de conserver les makefiles et les fichiers de projet.

Vote positif pour Ben. Nous avons un fournisseur majeur qui a fait un portage Windows de son ancien code Unix pour un accès matériel, et c’est exactement ce qu’ils ont fait.

Emacs fonctionne bien sur les deux plates-formes, tout comme GNU make. Si vous avez besoin d'une interface graphique, j'utiliserais GTK + avec MinGW / msys plutôt que Cygnus et un port X.

J'ai vu une démo de CMake à Fosdem il y a quelques mois et elle était vraiment impressionnante. Je pense que le temps passé à l’apprentissage peut en valoir la peine.

D’autre part, j’ai personnellement constaté que la gestion de fichiers de projet distincts par plate-forme est une manière parfaitement acceptable de procéder.

La seule chose non triviale à propos de l'utilisation de CMake pour la compilation croisée est l'écriture des informations sur la chaîne d'outils: CMake calcule le reste. Voir http://www.cmake.org/Wiki/CMake_Cross_Compiling#The_toolchain_file pour plus d'informations. informations.

Je ne sais pas à quel point vous voulez devenir complexe. J'utilise mingw-4.4.2 + cmake sur Linux pour compiler mes applications Qt4 pour Windows et NSIS sur Wine pour créer les fichiers d'installation. En gros, j'ai piraté mon CMakeLists.txt pour utiliser mingw quand je passe -DWin32 = 1. voici la partie pertinente:

if(WIN32) 
    SET(CMAKE_BUILD_TYPE "Release") #force release for win32, no motive to debug on win32

    SET(CMAKE_CXX_FLAGS_RELEASE  "-march=pentium4 -mtune=pentium4 -mwindows -DNDEBUG -mno-align-stringops -minline-stringops-dynamically -fno-ident -freorder-blocks-and-partition -finline-limit=700 -mfpmath=sse  -ftree-loop-distribution -floop-block -floop-interchange -floop-strip-mine -findirect-inlining -ftree-switch-conversion ${BASE_CXX_FLAGS}")

    SET(WIN32_BASE /home/win32-devel)
    SET(QT_LIB ${WIN32_BASE}/qt-win-opensource-src-4.5.3/lib/)

    SET(CMAKE_CXX_COMPILER i686-pc-mingw32-g++)
    SET(CMAKE_AR i686-pc-mingw32-ar)
    SET(CMAKE_RANLIB  i686-pc-mingw32-ranlib)
    SET(CMAKE_LINKER i686-pc-mingw32-ld)

    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                        COMMAND i686-pc-mingw32-windres
                            -I${CMAKE_CURRENT_SOURCE_DIR}
                            -o${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                            -i${CMAKE_CURRENT_SOURCE_DIR}/icons/win32_icon.rc
                        )

    SET(OPENSSL_LIBRARIES  ${WIN32_BASE}/openssl-0.9.8l/libeay32.dll;${WIN32_BASE}/openssl-0.9.8l/libssl32.dll)
    SET(QT_LIBRARIES  ${QT_LIB}QtCore4.dll;${QT_LIB}/QtGui4.dll)
    SET(CMAKE_EXECUTABLE_SUFFIX ".exe")

    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_LIB}../include ${WIN32_BASE}/openssl-0.9.8l/include)
    message("Building For   : Win32")
else()
    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR})
    message("Building For   : Linux")
endif()
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,--no-undefined -static-libgcc -Wl,-O1 -Wl,--as-needed -Wl,--sort-common -s")

modifier: J'ai oublié de mentionner que le développement réel est réalisé avec KDevelop 4.

MPC , "Le créateur de Makefile, de projet et d'espace de travail", est un autre outil cela pourrait vous être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top