Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake:如何将库链接到外部项目_Cmake_Gsl - Fatal编程技术网

CMake:如何将库链接到外部项目

CMake:如何将库链接到外部项目,cmake,gsl,Cmake,Gsl,我是CMake的新手,我想使用CMake构建一个项目(项目a),其中我必须包括一个外部自动工具项目(项目b),而我必须将其与GSL库链接。这是我的CMakeLists.txt的一部分: cmake_minimum_required(VERSION 2.6 FATAL_ERROR) project(project_a) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-shadow") ExternalProject_Add(project_b SOURC

我是CMake的新手,我想使用CMake构建一个项目(项目a),其中我必须包括一个外部自动工具项目(项目b),而我必须将其与GSL库链接。这是我的CMakeLists.txt的一部分:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(project_a)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-shadow")

ExternalProject_Add(project_b
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/project_b
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/project_b/configure --prefix=<INSTALL_DIR>
BUILD_COMMAND ${MAKE})

find_package(GSL REQUIRED)
include_directories(${GSL_INCLUDE_DIRS})

set(PROJECT_B_LIB_DIR "${PROJECT_SOURCE_DIR}/build/project_b-prefix/lib")
set(prefix "lib")
set(suffix ".a")
set(PROJECT_B_LIBRARIES "${PROJECT_B_LIB_DIR}/${prefix}project_b${suffix}")

target_link_libraries(project_a ${GSL_LIBRARIES})
target_link_libraries(project_a ${PROJECT_B_LIBRARIES})
cmake_最低要求(2.6版致命错误)
项目(项目a)
设置(CMAKE_CXX_标志“${CMAKE_CXX_标志}-Wno阴影”)
外部项目添加(项目b
SOURCE\u DIR${CMAKE\u CURRENT\u SOURCE\u DIR}/project\u b
CONFIGURE_命令${CMAKE_CURRENT_SOURCE_DIR}/project_b/CONFIGURE--前缀=
生成命令${MAKE})
查找包(需要GSL)
include_目录(${GSL_include_DIRS})
set(PROJECT_B_LIB_DIR“${PROJECT_SOURCE_DIR}/build/PROJECT_B-prefix/LIB”)
set(前缀为“lib”)
set(后缀“.a”)
集合(PROJECT_B_库“${PROJECT_B_LIB_DIR}/${prefix}PROJECT_B${suffix}”)
目标链接库(项目a${GSL\U库})
目标链接库(project_a${project_B_libraries})

问题是GSL库在project_a中工作,但在project_b中,我得到了对我尝试使用的任何GSL函数的“未定义引用”

我认为
project_b
应该单独检测库和它的头。你不能像中那样使用add_库吗?