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

Dil*_*war 3 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 ""
    )
Run Code Online (Sandbox Code Playgroud)

麻烦的是它不首先构建gsl,而是继续构建moose需要的项目gsl/gsl.h.它失败了因为gsl/gsl.h不在适当的地方.如何在开始构建主项目之前强制CMake构建外部项目.

小智 7

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

add_dependencies(moosebin gsl_local)
Run Code Online (Sandbox Code Playgroud)

请注意,这里的"moosebin"是您使用add_library或创建的目标的名称add_executable,它不一定与您定义的目标相同project().