2014-10-28 200 views
1

我的解决方案由一个静态库和一个使用它的控制台应用程序组成。 解决方案是从CMakeLists.txt文件(每个项目的顶级文件和两个文件)生成的 正如我所知,CMake中的项目依赖项通过更改add_subdirectory()顺序进行管理。 然而,它并不适合我CMake Visual Studio项目依赖关系

提供了完整的顶层文件

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,在CMake的Visual Studio的2013

回答

5

项目依赖是通过改变add_subdirectory()秩序管理。您可以通过add_dependencies命令明确指定目标的依赖关系:

add_dependencies(<目标> [<目标的依赖>] ...)

做一个顶级<目标>依赖于其他顶级目标,以确保他们在<目标>之前建立 。

或一些类似target_link_libraries命令会自动做到这一点:

...构建系统,以确保库被链接是 先进的日期前的目标链接。

所以,如果console_client链接vtunlib,命令target_link_libraries(console_client vtunlib)将处理自动生成订单。