2014-03-29 100 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()定義什麼的名稱。

相關問題