gpt4 book ai didi

c++ - 我应该如何在 github 上设置一个 C++ 项目以便它是可移植的?

转载 作者:可可西里 更新时间:2023-11-01 15:24:26 25 4
gpt4 key购买 nike

我想在 GitHub 上启动一个 C++ 项目,这样我就可以在不同的操作系统(例如 OSX 和 unix)上克隆/构建。将有很多依赖项需要安装(例如 curl、libxml2 等),我希望尽可能避免让用户需要在系统上手动安装依赖项。可以这样做吗?

最佳答案

这取决于你想咬多少。

简短的回答是让 CMake 完成工作。它将为任何平台生成项目,它们应该是可用的。您不需要为此分发二进制文件,假设它们对您(以及对他们来说,通过扩展)随时可用。

这是一个设置 sqlite、boost 和 eigen 的示例,我在我的一个项目中使用了它。

cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules)

# boost
find_package(Boost 1.42.0 REQUIRED )
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})

find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})

find_package(Sqlite3 REQUIRED)
include_directories(${SQLITE3_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "-std=c++0x")

include_directories(.)

link_libraries(
${Boost_LIBRARIES}
${SQLITE3_LIBRARIES}
)

add_executable(igd_sqlite
main.cpp
)

您将使用它并生成 visual studio 项目、makefile 等。然后像往常一样构建项目。

CMake 支持许多开箱即用的库,但有时您必须通过 google 搜索不太受欢迎的库并将它们添加到您的项目中。

我将它用于我的日常工作,即使我不需要跨平台也是如此。

当我确实想要分发二进制文件时,我通常会设置一个包含二进制文件的外部文件夹。

这是一个例子:

https://github.com/tomisarobot/curl_race

如果您没有很多外部依赖项并且它们不是很大,那么这非常有用。如果不是这种情况,那么我建议将每个平台放在不同的存储库中。您的来源也应该是自己的。如果需要,您可以使用子项目,但这不是绝对必要的。外部部门不会经常更改,因此并不总是值得开销。通常我只是写一个 bash 脚本来记录从哪里获得所有东西。无论如何,这个脚本通常是分发构建所必需的。

maven-nar-plugin 这样的东西存在,虽然我不知道它的成熟。如果您只是创建所有二进制文件以与您的源代码一起分发,那么它可能没有那么吸引人。我没有看到很多关于它的讨论,所以我认为采用率很低。看过 maven 为 Java 做了什么,它应该更受欢迎。

关于c++ - 我应该如何在 github 上设置一个 C++ 项目以便它是可移植的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com