我想在开始构建主项目之前构建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构建外部项目。
答案 0 :(得分:6)
使用add_library / add_executable定义主库/可执行文件后,使用add_dependencies
命令(link)将gsl_local设置为项目的依赖项。
add_dependencies(moosebin gsl_local)
请注意" moosebin"以下是您使用add_library
或add_executable
创建的目标的名称,该名称不一定与您使用project()
定义的目标相同。