CMake和vcpkg-查找正确的库名称

时间:2019-03-16 11:41:55

标签: cmake vcpkg

对于使用vcpkg安装的软件包,我很难找到要在cmake文件中使用的正确“库目标名称”。

例如,我使用gtest安装了vcpkg install gtest软件包。我的示例cmake文件如下所示:

#CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(example)
add_executable(main main.cpp)
find_package(gtest REQUIRED)
target_link_libraries(main gtest) # here, "gtest" is not the right name! 

运行cmake时,生成了Visual Studio解决方案,但是运行cmake --build .后,出现错误:

../use-cmake-vcpkg\main.cpp(1): fatal error C1083: Cannot open include file: 'gtest/gtest.h': No such file or directory ..

最后一行:target_link_libraries(main gtest)不正确,我需要使用另一个“名称”来包含/链接gtest软件包。

有没有办法(使用cmake或vcpkg)找出要使用的正确目标名称? (在这种情况下适用于gtest,还适用于其他任何功能)

1 个答案:

答案 0 :(得分:1)

使用n = int(input()) names = {} for foo in range(n): entry = input().split(' ') names[entry[0]] = entry[1] while True: # (1 == 1) == True try: check = input() except EOFError: # catch the error break # exit the loop if(names.get(check)!=None): print(check + '=' + names.get(check)) else: print('Not Found') 时,它可以在两种模式下工作: MODULE CONFIG 。以及此调用的结果变量和目标取决于模式

如果find_package(XXX)文件存在(并且可以找到),则使用 MODULE 模式并处理给定的文件。否则,如果软件包随附FindXXX.cmake文件,则使用 CONFIG 模式并处理给定的文件。如果此文件都不存在,则CMake会发出错误(如果使用 REQUIRED 关键字调用)或警告(没有 REQUIRED 关键字)。

对于XXXConfig.cmake软件包,CMake附带了gtest脚本,因此该脚本以 MODULE 模式处理。您可以在documentation中找到此脚本的描述,该脚本表明您需要使用FindXXX.cmake目标与gtest链接:

GTest::GTest