Daniel N
Daniel N

Reputation: 55

Issue finding and linking Psapi library to executable using cmake

I am trying to link the psapi library to a project with cmake, nothing complex. Here's my cmake-file:

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() 

There are no other "Psapi.Lib" files on my computer except for in ".../um/x86", but my system is 64-bit so I want the x64, no? Anyhow the output in CMake GUI for Psapi field is "Psapi-NOTFOUND" and in VS2013 all of the functions in Psapi.h recieve syntax errors. I guess since they can't link to the library. Am I forgetting something vital in my cmake file? Any suggested fix or alternative method is welcome, thanks in advance.

I get the same result when I try the below instead of 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")

Upvotes: 0

Views: 2154

Answers (1)

Halcyon
Halcyon

Reputation: 1429

For future reference I got it to work in CMake as follows, credit goes to Chibueze Opata on this question:

find_library (PSAPI Psapi)

...

add_executable(...)

...

target_link_libraries(Basic -lpsapi)

Upvotes: 2

Related Questions