我想在GitHub上启动一个C项目,以便我可以克隆/构建不同的操作系统(例如OSX和unix).将需要安装很多依赖项(例如curl,libxml2等),并且尽可能地避免用户需要在系统上手动安装deps.有可能吗?
最佳答案
这取决于你想要多少钱.
简单的答案是让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
)
你会采取这一点,并产生视觉工作室项目,makefile等.然后按照通常的方式构建项目.
CMake支持很多库,尽管有时您不得不使用较不流行的库,并将它们添加到您的项目中.
我用它来做日常工作,即使我不需要跨平台.
当我真的想分发二进制文件时,我通常会使用二进制文件设置一个外部文件夹.
这是一个例子:
https://github.com/tomisarobot/curl_race
如果你没有很多的外部依赖关系,如果它们不是巨大的话,这样做会很好.如果不是这样,那么我建议将每个平台放在不同的存储库中.你的来源也应该是自己的.如果需要,可以使用子项目,但这并不是绝对必要的.外部人士经常不会改变,所以它并不总是值得开销.通常我只是写一个bash脚本来记录在哪里得到一切.无论如何,此脚本通常对于分发版本是必需的.
存在像maven-nar-plugin这样的事情,虽然我不知道它的成熟度.如果你只是创建所有的二进制文件来分发你的源代码,那么也许这不是那么有吸引力.我没有看到很多话题,所以我认为接受率很低.看到了maven对于Java来说,它应该更受欢迎.
相关文章
- 我应该如何设置我的Git存储库以便能够在两个位置推送并仍然有一个工作目录?
- msbuild - 我可以得到一个“有时可移植”类库项目加载在Visual Studio Express?
- javascript - 我应该如何调用3个功能,以便一个接一个执行它们?
- 如何可以可移植地调用一个C函数在某些平台上接受一个char **和一个const char **在其他平台?
- c# - 如何设置log4net以便它可以在wcf服务上运行?
- 在Xcode中,如何创建一个新工作区并向其添加一个项目,以便我可以看到项目及其文件?
- 在Windows 10上,如何设置VPN客户端以便所有用户都可以使用它(即在登录前可用)
- 在我分叉github项目之后,我该如何保持现有的原始项目?
转载注明原文:我应该如何在github上设置一个C项目以便它可移植? - 代码日志