CMake Visual Studio项目依赖项

时间:2014-10-28 13:34:41

标签: visual-studio-2013 cmake

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

提供完整的顶级文件

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 个答案:

答案 0 :(得分:5)

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

  

add_dependencies(< target> [< target-dependency>] ...)

     

制作顶级<目标>依赖其他顶级目标来确保他们建立   之前<目标>确实

target_link_libraries之类的命令会自动执行此操作:

  

...构建系统以确保链接的库是   目标链接之前的最新版本。

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