c++ - Gradle 构建的带有 Boost Lib 的 C++ 示例项目
问题描述
我对如何使用 C++ 和使用 gradle 构建应用程序很感兴趣。我已经想出了如何在没有任何外部库的情况下提供一个简单的应用程序,但是当我尝试将Boost添加到项目中时,我遇到了很多误解,正确的方法是什么。
所以,如果我从我的 CMake 项目中得到一个例子,我有下一个代码
cmake_minimum_required(VERSION 3.19)
project(messenger)
set(CMAKE_CXX_STANDARD 20)
set(EXECUTABLE_SOURCE
socket/ClientSocketConnector.h
../core/socket/SocketConnector.h
../core/socket/dto/Message.h
../core/socket/utils/SerializationUtils.h
../core/socket/SocketConnector.cpp
socket/ClientSocketConnector.cpp
)
set(BOOST_INCLUDEDIR C:/CPlusPlus/vcpkg/installed/x64-windows/include)
set(BOOST_LIBRARYDIR C:/CPlusPlus/vcpkg/installed/x64-windows/lib)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS serialization REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(clientChat main.cpp ${EXECUTABLE_SOURCE})
target_link_libraries(clientChat ${Boost_LIBRARIES})
也许这不是最好的实现,但它至少有效。
我试图用 Gradle 做同样的构建。
也许有人可以分享一个例子,我可以看到在项目中包含 Boost 库的正确方法,并继续享受其中的乐趣和痛苦:)
目前,我有下一个
构建.gradle
plugins {
id 'cpp'
id 'cpp-application'
}
model {
repositories {
libs(PrebuiltLibraries) {
boost {
headers.srcDir "C:/CPlusPlus/vcpkg/installed/x64-windows/include"
binaries.withType(StaticLibraryBinary) {
staticLibraryFile = file("C:/CPlusPlus/vcpkg/installed/x64-windows/lib/boost_unit_test_framework-vc140-mt.lib")
}
}
}
}
platforms {
x86 {
architecture "x86"
}
x64 {
architecture "x86_64"
}
}
components {
main(NativeExecutableSpec) {
targetPlatform "x64"
sources {
cpp {
source {
srcDirs "src/main/cpp", "src/shared/c++"
include "**/*.cpp"
}
exportedHeaders {
srcDirs "src/main/headers", "src/shared/headers"
}
lib library: "boost", linkage: "api"
}
}
}
}
}
version = '1.2.1'
和
主文件
#include <iostream>
#include <boost/test/unit_test.hpp>
using namespace boost::unit_test;
int main() {
std::cout << "hello from gradle build with boost system" << std::endl;
return 0;
}
当我尝试组装我的项目时,我得到下一个错误
main.cpp
C:\Users\natri\CLionProjects\cplusplus-gradle-trainee\src\main\cpp\main.cpp(3): fatal error C1083: Cannot open include file: 'boost/test/unit_test.hpp': No such file or directory
解决方案
推荐阅读
- linux - 如何使 PAM 密码身份验证正常工作?
- javascript - 在 JS 中使用 Date 对象检查年龄
- javascript - Javascript TypeError:未定义不是对象
- java - 在不使用数组的情况下在 Java 中对句子进行排序
- reactjs - 在antd中以动态形式获取字段值
- json - 如何使用 jq 使用 BASH 变量中的键解析 JSON?
- javascript - 我可以在 Dart 上运行所有 JavaScript 功能吗?
- javascript - 自动提交,一旦选择选项
- c - 用字符数计算单词
- mysql - 错误 1136 列计数与值计数不匹配