我正试图用cmake将psapi库链接到一个项目,没有什么复杂的。这是我的cmake文件:
cmake_minimum_required(VERSION 2.8)
project(BenchmarkTests)
add_definitions(-DPSAPI_VERSION=1)
if (WIN32)
FILE(GLOB win32_head
Timer.h
win_Memory.h
win_Processor.h
BenchmarkTests.h)
FILE(GLOB win32_source *.cpp)
SET(win32_test ${win32_head} ${win32_source})
SET(LIBDIR_NAME "C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/")
SET(LIBDIR $ENV{${LIBDIR_NAME}})
SET(LIBNAME "Psapi.Lib")
find_library (Psapi ${LIBNAME} {LIBDIR})
ADD_EXECUTABLE(bmTests ${win32_test})
TARGET_LINK_LIBRARIES(bmTests Psapi)
SOURCE_GROUP("win32" FILES ${win32_test})
endif()
除了"…/um/x86"之外,我的计算机上没有其他"Psapi.Lib"文件,但我的系统是64位的,所以我想要x64,不是吗?无论如何,Psapi字段的CMake GUI中的输出是"Psapi NOTFOUND",而在VS2013中,Psapi.h中的所有函数都会收到语法错误。我想是因为他们无法链接到图书馆。我是不是忘记了我的cmake文件中的一些重要内容?欢迎任何建议的修复或替代方法,提前感谢。
当我尝试以下而不是find_library(…)时,我得到了相同的结果
add_library(Psapi STATIC IMPORTED)
set_property(TARGET Psapi PROPERTY IMPORTED_LOCATION "C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/Psapi.Lib")
为了将来的参考,我让它在CMake工作如下,Chibueze Opata在这个问题上值得称赞:
find_library (PSAPI Psapi)
add_executable(...)
target_link_libraries(Basic -lpsapi)