我在尝试做一些看似琐碎的事情时遇到了很多困难。我想在docker容器中安装一些库以在项目中使用(将其视为任何其他VM),但是希望在主机内部使用IDE进行实际开发。
直接依赖项在这种情况下有些可行,但是像boost等常见的对应库在IDE中缺少头文件,因此即使程序可以编译,我也会在IDE中遇到许多错误和缺少头文件的情况。
以下是一个示例CMake文件,用于将nghttp2作为项目的依赖项:
直接依赖项在这种情况下有些可行,但是像boost等常见的对应库在IDE中缺少头文件,因此即使程序可以编译,我也会在IDE中遇到许多错误和缺少头文件的情况。
以下是一个示例CMake文件,用于将nghttp2作为项目的依赖项:
cmake_minimum_required(VERSION 3.2)
project(deptest)
set(CMAKE_CXX_STANDARD 11)
################ hidapi
set(NGHTTP2_ROOT ${CMAKE_BINARY_DIR}/vendor/nghttp2)
set(NGHTTP2_LIB_DIR ${NGHTTP2_ROOT}/bin/lib)
set(NGHTTP2_INCLUDE_DIR ${NGHTTP2_ROOT}/bin/include)
include(ExternalProject)
ExternalProject_Add(nghttp2_dep
PREFIX ${NGHTTP2_ROOT}
GIT_REPOSITORY "https://github.com/nghttp2/nghttp2.git"
GIT_TAG "0641d314a62fc2f9ede5cbb487895236da4ae4f4"
UPDATE_COMMAND ""
PATCH_COMMAND ""
BINARY_DIR ${NGHTTP2_ROOT}/src/nghttp2
SOURCE_DIR ${NGHTTP2_ROOT}/src/nghttp2
INSTALL_DIR ${NGHTTP2_ROOT}/bin
CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --enable-asio-lib
BUILD_COMMAND make
BUILD_BYPRODUCTS ${HIDAPI_LIB_DIR}/libnghttp2.a)
# hidapi requires an initial execution of "./bootstrap" to run autoreconf
ExternalProject_Add_Step(nghttp2_dep
bootstrap
COMMAND autoreconf -i && automake && autoconf
DEPENDEES download
DEPENDERS configure
WORKING_DIRECTORY ${NGHTTP2_ROOT}/src/nghttp2)
add_library(nghttp2 STATIC IMPORTED)
set_target_properties(nghttp2 PROPERTIES IMPORTED_LOCATION ${HIDAPI_LIB_DIR}/libnghttp2.a)
add_dependencies(nghttp2 nghttp2_external)
################ test app
include_directories(build/vendor/nghttp2/bin/include)
#include_directories("build/vendor/std")
add_executable(deptest src/main.cpp)
target_link_libraries(deptest nghttp2)
target_link_libraries(deptest ${Boost_LIBRARIES})
您有什么建议可以实现这一点吗?由于依赖项仅适用于Linux,因此我无法直接在Mac上构建和运行所有内容,因此我只想将其用作IDE源,但是在VM框中进行所有编译,唯一的问题似乎是如何让CMake了解Mac上头文件的位置。此外,我正在使用最新的CLion版本。