Cmake

Salut 4ian,

Quand j’essaie de compiler certaines extensions avec Cmake, la compilation échoue car le linker trouve de multiples définitions des fonctions. Cela se produit par exemple sur Box3DObject.

[code]Creating library file: E:\Developpement\Projets\Game Develop\GDSDK\Binaries\Outp
ut\Release\CppPlatform\Extensions\libBox3DObject.dll.a
CMakeFiles\Box3DObject.dir/objects.a(CMakeCXXCompilerId.cpp.obj):CMakeCXXCompile
rId.cpp:(.text+0x0): multiple definition of main' CMakeFiles\Box3DObject.dir/objects.a(CMakeCCompilerId.c.obj):CMakeCCompilerId.c: (.text+0x0): first defined here CMakeFiles\Box3DObject.dir/objects.a(CMakeCXXCompilerId.cpp.obj):CMakeCXXCompile rId.cpp:(.data+0x0): multiple definition of info_compiler’
CMakeFiles\Box3DObject.dir/objects.a(CMakeCCompilerId.c.obj):CMakeCCompilerId.c:
(.data+0x0): first defined here
CMakeFiles\Box3DObject.dir/objects.a(CMakeCXXCompilerId.cpp.obj):CMakeCXXCompile
rId.cpp:(.data+0x4): multiple definition of info_platform' CMakeFiles\Box3DObject.dir/objects.a(CMakeCCompilerId.c.obj):CMakeCCompilerId.c: (.data+0x4): first defined here CMakeFiles\Box3DObject.dir/objects.a(CMakeCXXCompilerId.cpp.obj):CMakeCXXCompile rId.cpp:(.data+0x8): multiple definition of info_arch’
CMakeFiles\Box3DObject.dir/objects.a(CMakeCCompilerId.c.obj):CMakeCCompilerId.c:
(.data+0x8): first defined here
collect2: ld returned 1 exit status
mingw32-make[2]: *** [E:/Developpement/Projets/Game Develop/GDSDK/Binaries/Outpu
t/Release/CppPlatform/Extensions/Box3DObject.xgdwe] Error 1
mingw32-make[1]: *** [Box3DObject/CMakeFiles/Box3DObject.dir/all] Error 2
mingw32-make: *** [all] Error 2[code]

[/code][/code]

Qu’est ce que c’est que ce fichier objects ?
Avec CMake, le système est maintenant sensible aux fichiers sources qui auraient pu être laissé dans les dossiers des extensions ( et autrefois pas integrés aux fichiers projets ), vérifie si rien ne traine… Au pire vire le dossier Extensions et met à la place celui fraichement téléchargé. :slight_smile:

Le fichier Objects.a semble être généré par CMake avec le fichier CMakeCXXCompilerId.cpp

J’ai l’impression que CMakeCXXCompilerId.cpp cherche à être compilé en même temps que l’extension alors que c’est un fichier de CMake qui n’a rien à voir.
Tu compile dans un répertoire séparé ? ( Genre moi je fais un répertoire nommé “.build” dans le dossier Binaries ).

Je venais juste de comprendre. J’avais pas pensé à changer le répertoire de build étant donné que GD ne l’utilisepas pour choisir où être compilé.