2014-03-29 64 views
2

我想在开始构建我的主项目之前构建gsl。我将以下行添加到根文件CMakeLists.txt使用CMake在主项目之前强制构建外部项目(带buildtools)

cmake_minimum_required(VERSION 2.8) 
project(moose) 
include(CheckIncludeFiles) 
include(ExternalProject) 
# Use local gsl 
ExternalProject_Add(gsl_local 
    URL ${CMAKE_CURRENT_SOURCE_DIR}/external/gsl/gsl-1.16.tar.gz 
    PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/gsl 
    CONFIGURE_COMMAND ./../gsl_local/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/gsl 
    BUILD_COMMAND make 
    INSTALL_COMMAND "" 
    ) 

麻烦的是,它不首先建立GSL但接着建立项目moose需要gsl/gsl.h。它失败,因为gsl/gsl.h不在适当的位置。如何强制CMake在开始构建主项目之前构建外部项目。

回答

5

在使用add_library/add_executable定义主库/可执行文件后,使用add_dependencies命令(link)将gsl_local设置为项目的依赖项。

add_dependencies(moosebin gsl_local) 

注意,“moosebin”这里是你add_libraryadd_executable创建目标,这不一定是一样的,你用project()定义什么的名称。

相关问题