为儿童项目应用CMake设置

问题描述 投票:1回答:1

我有一个像这样的项目目录设置:

3rdparty 
    |--glfw
test
   |--3rdparty
      |--googletest
   |--CMakeLists.txt (Test project CMakeLists)
CMakeLists.txt (Main project CMakeLists)

在设置外部依赖项的主项目中:

add_subdirectory(3rdparty/glfw)
target_link_libraries(Main glfw)

为Test项目应用所有依赖项的最佳方法是什么?我是否应该在子CMakeLists.txt中重做所有依赖项代码?提前致谢

c++ c cmake include glfw
1个回答
1
投票

通常,当您有测试项目时,必须将测试可执行文件链接到其余代码。通过使用CMake执行此操作,您应该自动获得传递依赖项。但是,要做到这一点,您需要基于CMake目标的API。

add_executable(Main ... your cpp files ...)
add_library(YourLib ... your cpp files ...)

add_subdirectory(3rdparty/glfw) # or find_package(glfw)

# link YourLibs to glfw
target_link_libraries(YourLibs PUBLIC glfw)

# link Main to YourLibs and its public dependencies
target_link_libraries(Main PUBLIC YourLibs)

然后在您的测试cmake文件中,链接到与您的exe相同的目标以获取对您自己的函数的访问权限,包括目录和库:

add_executable(Test cppfile.cpp)
add_test(Test)
target_link_libraries(Test PRIVATE YourLibs gtest)
© www.soinside.com 2019 - 2024. All rights reserved.