c++ - CMake 和 Window .Lib 文件

标签 c++ windows cmake

我一直在努力在 Stackoverflow 上寻找这个问题的答案,至少是我理解的答案。我最近购买了 CLion,并想将一个旧项目从 Visual Studio 移植到它上面。但我不知道如何将 .lib 文件链接或添加到我的项目中。我需要链接 Xinput 和 DSound。

在 Visual Studio 中,我只是添加了 header ,然后将它们添加到我的文件的顶部

#pragma comment(lib, "XInput.lib")

#pragma comment(lib, "Dsound.lib")

我完全不知道如何使用 CMake 链接到这些库,因为我是一个完全的初学者。

任何帮助将不胜感激

这是我当前的 CMake 文件

cmake_minimum_required(VERSION 3.3)
project("Handmade_Hero")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")

add_executable("Handmade_Hero" ${SOURCE_FILES})

更新

cmake_minimum_required(VERSION 3.3)
project(Handmade_Hero)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)

INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")

add_executable(Handmade_Hero ${SOURCE_FILES})

set( LIBS XInput DSound )
target_link_libraries(Handmade_Hero ${LIBS} )

我的编译器现在抛出以下错误:

PATH\ClionProjects\Handmade-Hero\main.cpp:3:20: fatal error: Xinput.h: No such file or directory
 #include <Xinput.h>
                    ^
compilation terminated.
mingw32-make.exe[3]: *** [CMakeFiles/Handmade_Hero.dir/main.cpp.obj] Error 1
CMakeFiles\Handmade_Hero.dir\build.make:62: recipe for target 'CMakeFiles/Handmade_Hero.dir/main.cpp.obj' failed
mingw32-make.exe[2]: *** [CMakeFiles/Handmade_Hero.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/Handmade_Hero.dir/rule] Error 2
mingw32-make.exe: *** [Handmade_Hero] Error 2
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Handmade_Hero.dir/all' failed
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Handmade_Hero.dir/rule' failed
Makefile:117: recipe for target 'Handmade_Hero' failed

最佳答案

只需在您的 CMakeLists.txt 之后添加这些

SET( LIBS XInput DSound )
TARGET_LINK_LIBRARIES(projectname ${LIBS} )

关于c++ - CMake 和 Window .Lib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380787/

相关文章:

c - 将字符串文字放在变量之前

python - 命令行查找多个字符串

makefile - cmake FindLAPACK.cmake 和 FindBLAS.cmake 无法链接 lapack 和 blas

c++ - OpenCV_FOUND 为 FALSE,因此包 "OpenCV"被认为未找到

C++ : DirectX Texture is Misaligned/Shifted

java - 如何修改 NDK 中的 Android 位图以便我可以在 Java 端使用它?

c# - 在水平任意轴上旋转 3D 点

php - 如何使用 phing 删除符号链接(symbolic link)?

c++ - 正确使用 CMAKE_*_OUTPUT_DIRECTORY

c++ - 添加 nuget 包后出现多个 Link2001 错误