J'ai un projet dans CLion dans lequel j'ai besoin d'inclure une bibliothèque du SDK Windows 8.1, donc j'ai essayé d'utiliser CMake pour le lier.
Je n'ai pas de fichiers .so ou .dll, mais .lib (ou directement le fichier .h).
Plus précisément, cette bibliothèque est dsound.h.
J'ai essayé de chercher des questions connexes, mais aucune des solutions que j'ai trouvées ne fonctionne pour moi: comment puis-je le faire?CMake lier Windows SDK
Mon CMakeLists.txt actuelle est
cmake_minimum_required(VERSION 3.7)
project(Project)
set(CMAKE_CXX_STANDARD 11)
include_directories(${WinSDK})
set(SOURCE_FILES main.cpp file1.h file1.cpp)
add_executable(Project ${SOURCE_FILES})
target_link_libraries(Project ${WinSDK})
où WinSDK est la variable contenant l'emplacement du SDK de Windows.
L'erreur que je reçois est la suivante:
[ 33%] Building CXX object CMakeFiles/Project.dir/main.cpp.obj
[ 66%] Building CXX object CMakeFiles/Project.dir/soundclass.cpp.obj
In file included from C:\projectPath\soundclass.cpp:4:0:
C:\projectPath\soundclass.h:21:24: fatal error: dsound.h: No such file or directory
In file included from C:\projectPath\main.cpp:5:0:
C:\projectPath\soundclass.h:21:24: fatal error: dsound.h: No such file or directory
compilation terminated.
compilation terminated.
CMakeFiles\Project.dir\build.make:61: recipe for target 'CMakeFiles/Project.dir/main.cpp.obj' failed
CMakeFiles\Project.dir\build.make:85: recipe for target 'CMakeFiles/Project.dir/soundclass.cpp.obj' failed
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Project.dir/all' failed
mingw32-make.exe[3]: *** [CMakeFiles/Project.dir/main.cpp.obj] Error 1
mingw32-make.exe[3]: *** Waiting for unfinished jobs....
mingw32-make.exe[3]: *** [CMakeFiles/Project.dir/soundclass.cpp.obj] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/Project.dir/all] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Project.dir/rule' failed
Makefile:117: recipe for target 'Project' failed
mingw32-make.exe[1]: *** [CMakeFiles/Project.dir/rule] Error 2
mingw32-make.exe: *** [Project] Error 2
Où avez-vous initialiser la variable 'WinSDK' ? Quelque part dans une portée supérieure? Les fichiers d'en-tête sont-ils exactement situés à l'emplacement que vous avez enregistré dans la variable 'WinSDK'? – Akira
La variable 'WinSDK' a été définie dans les variables de chemin de CLion; maintenant je l'ai changé en fonction de include et library, comme suggéré par @utopia, et cela fonctionne. – thesmith
Mon intention avec ma question était de s'assurer que vous définissez l'emplacement exact des en-têtes et des bibliothèques ou non. Il semble que ce soit la cause première de votre problème. – Akira