首页 文章

CMake Visual Studio项目依赖项

提问于
浏览
2

我的解决方案包含一个静态库和一个使用它的控制台应用程序 . 该解决方案是从CMakeLists.txt文件生成的(顶级文件和每个项目的两个文件)我知道CMake中的项目依赖项是通过更改add_subdirectory()顺序来管理的 . 但是,它对我不起作用

提供完整的顶级文件

cmake_minimum_required(VERSION 2.8)
project(vtun CXX)
set(TARGET vtun)

set(Boost_DEBUG ON)
set(Boost_USE_STATIC_LIBS ON)
set(BOOST_ROOT ${MY_BOOST_DIR}) 

find_package(Boost 1.55.0) 

if(NOT Boost_FOUND)
  message(FATAL_ERROR "Boost libraries are required")
endif()

add_subdirectory(vtunlib)
add_subdirectory(console_client)

vtunlib项目是第一个,但无论如何* .sln文件不包含依赖项信息,并且始终首先构建console_client

CMake 3.0,Visual Studio 2013

1 回答

  • 5

    通过更改 add_subdirectory() 订单管理CMake中的项目依赖项 not . 您可以通过add_dependencies命令显式指定目标依赖项:

    add_dependencies(<target> [<target-dependency>] ...)使顶级<target>依赖于其他顶级目标,以确保它们在<target>之前构建 .

    或者像target_link_libraries这样的命令会自动执行:

    ...构建系统,以确保链接的库在目标链接之前是最新的 .

    因此,如果 console_client 链接 vtunlib ,命令 target_link_libraries(console_client vtunlib) 将自动处理构建顺序 .

相关问题