使用CMake在主项目之前强制构建外部项目(使用buildtools)

时间:2014-03-29 19:11:51

标签: cmake

我想在开始构建主项目之前构建gsl。我将以下行添加到根CMakeLists.txt文件中。

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构建外部项目。

1 个答案:

答案 0 :(得分:6)

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

add_dependencies(moosebin gsl_local)

请注意" moosebin"以下是您使用add_libraryadd_executable创建的目标的名称,该名称不一定与您使用project()定义的目标相同。