Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake和Window.Lib文件_C++_Windows_Cmake - Fatal编程技术网

C++ CMake和Window.Lib文件

C++ CMake和Window.Lib文件,c++,windows,cmake,C++,Windows,Cmake,我一直在努力在Stackoverflow上找到这个问题的答案,至少我能理解。我最近买了CLion,想把一个老项目从VisualStudio移植到它上面。但我不知道如何将.lib文件链接或添加到我的项目中。我需要连接Xinput和DSound 在VisualStudio中,我只是添加了标题,然后将其添加到文件的顶部 #pragma注释(lib,“XInput.lib”) #pragma注释(lib,“Dsound.lib”) 我完全不知道如何使用CMake链接到这些LIB,因为我是一个完全的初学者

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

在VisualStudio中,我只是添加了标题,然后将其添加到文件的顶部

#pragma注释(lib,“XInput.lib”)

#pragma注释(lib,“Dsound.lib”)

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

任何帮助都将不胜感激

这是我当前的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
PATH\ClionProjects\mandwide Hero\main.cpp:3:20:致命错误:Xinput.h:没有这样的文件或目录
#包括
^
编译终止。
mingw32 make.exe[3]:***[CMakeFiles/MANDAL_Hero.dir/main.cpp.obj]错误1
CMakeFiles\MANDARY_Hero.dir\build.make:62:目标“CMakeFiles/MANDARY_Hero.dir/main.cpp.obj”的配方失败
mingw32 make.exe[2]:***[CMakeFiles/MANDAL_Hero.dir/all]错误2
mingw32 make.exe[1]:***[CMakeFiles/MANDAL_Hero.dir/rule]错误2
mingw32-make.exe:**[手工制作的英雄]错误2
CMakeFiles\Makefile2:66:目标“CMakeFiles/Handmade_Hero.dir/all”的配方失败
CMakeFiles\Makefile2:78:目标“CMakeFiles/Handmade_Hero.dir/rule”的配方失败
Makefile:117:目标“手工制作英雄”的配方失败

只需在CMakeLists.txt之后添加这些内容即可

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

您好,非常感谢您的回复,我添加了这两行,现在抛出以下错误“error:cannotspecifylinklibrariesfortarget”“Actual Project Name”,它不是由该项目生成的@Richard:这种错误意味着
target\u link\u库
的第一个参数与
add\u executable
@Tsyvarev的不同。add\u executable和target\u link\u库的名称是相同的。我更新了我的post@Richard:项目名称是项目的真实名称吗?通常,CMake目标不包含空格。@Tsyvarev:不包含空格,我的真实项目名有下划线。实际上,我正在学习一个教程“手工制作的英雄”,因此项目名称为“手工制作的英雄”。因此,您应该使用
include\u directories
来告诉CMake,哪个目录包含给定的标题。您的
Xinput.h
文件在哪里?@Tsyvarev:它们似乎都位于C:\Program Files(x86)\Microsoft SDK\Windows\v7.1A\IncludeHmm中,给定的目录似乎与Visual Studio相关。其标题可能与Mingw和CLion不兼容。但您可以尝试使用它们:
include\u目录(“C:\Program Files(x86)\Microsoft SDK\Windows\v7.1A\include”)
。实际的.lib文件似乎位于这里“C:\Program Files(x86)\Windows Kits\8.1\lib\winv6.3\um\x86”。当我添加include_目录(“C:\Program Files(x86)\Microsoft SDK\Windows\v7.1A\include”)时,实际的编辑器会抱怨“(”)”或预期的参数得到“”,您应该使用UNIX斜杠“/”。还可以使用
LINK\u目录
单独设置lib路径<代码>包含标题的目录。