使用cmake发现并将Psapi库链接到可执行文件

时间:2015-12-09 22:57:07

标签: cmake static-linking psapi

我正在尝试使用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")

1 个答案:

答案 0 :(得分:0)

为便于将来参考,我将其按如下方式在CMake中使用,在this问题上归功于Chibueze Opata:

find_library (PSAPI Psapi)

...

add_executable(...)

...

target_link_libraries(Basic -lpsapi)