首页 > 解决方案 > 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

标签: c++gradle

解决方案


推荐阅读