xmake
cmake-conan
Our great sponsors
xmake | cmake-conan | |
---|---|---|
162 | 18 | |
8,592 | 785 | |
2.4% | 1.8% | |
9.9 | 8.2 | |
4 days ago | 11 days ago | |
Lua | Python | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
xmake
-
An Introduction to Modern CMake
My usual comment shilling for xmake in any build system conversation, that's how much I like it : https://xmake.io/#/
There are other installation methods : https://xmake.io/#/guide/installation?id=macos
It's in the official Fedora and Arch repos and there is ppa for Ubuntu
-
How to Structure C Projects: These Best Practices Worked for Me
In recent times I prefer Xmake[0] to CMake.
[0] https://xmake.io
-
I just want to say I love Rust
I really like xmake for c++, not very similar to cargo but then c++ isn't very similar to rust.
- Xmake v2.7.8 released, Improve package virtual environment and build speed
-
Build Systems for C++
I recommend xmake
you can try xmake. https://github.com/xmake-io/xmake
-
What is your preferred cross-platform project building tool for C and why?
xmake nothing comes close
-
Stop Comparing Rust to Old C++
C++ now also has many more modern tools, such as Xmake
cmake-conan
-
CMake+Conan2 project template example repositories?
Some pure conan options, there's a 2.0 super early developer preview for https://github.com/conan-io/cmake-conan/tree/develop2
-
Conan package manager completely broken after 2.0 release
I totally agree with you. Have a look at the new cmake-conan integration using Dependency Provider in the develop2 branch : https://github.com/conan-io/cmake-conan/tree/develop2
-
Conan 2.0, the new version of the open-source C and C++ package manager
Assuming you're using cmake as your build system, you can use conan.cmake which would allow you to run cmake normally.
I've always used conan together with the conan cmake module
- Use cmake to install dependency libraries?
-
CMake + Poco + FetchContent build options problem
If OP doesn't want to bother with the all the Conan pre-configuration commands and scripts, there's a really convenient script to embed everything Conan-related inside your CMakeLists, only asking for the path to conan.exe during CMake-configuration step: https://github.com/conan-io/cmake-conan
-
Best way to manage dependencies with c++?
I always wanted to try to use cmake-conan so I could let Conan grab all packages but have a neat cmake script being in charge of what gets built when. Also, this would allow me to easily switch between CMake fetchcontent and Conan packages that may or may not be stashed automatically on a local Artifactory server. Secondly, since now all build requirements are stashed on a server and binary reproducible, you could concider adding icecream and ccache into the mix. (Try running a node one of your buildservers for massive speadups with icecream) This however does require a reproducible build environment (by configure script) which conan again is really good in.
-
How do you manage third-party libraries
If you want everything Conan-related to be silently managed by your CMake script, check this: https://github.com/conan-io/cmake-conan
-
Conan combined with mingw doesn't work on Linux
cmake_minimum_required(VERSION 3.20) project(wxocto CXX) set(CMAKE_CXX_STANDARD 23) # Request the required wxWidgets libs find_package(wxWidgets 3.1 REQUIRED) # Include the wxWidgets use file to initialize various settings include(${wxWidgets_USE_FILE}) list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) #if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") # message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") # file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.16.1/conan.cmake" # "${CMAKE_BINARY_DIR}/conan.cmake" # EXPECTED_HASH SHA256=396e16d0f5eabdc6a14afddbcfff62a54a7ee75c6da23f32f7a31bc85db23484 # TLS_VERIFY OFF) #endif() include(./conan.cmake) conan_cmake_configure( REQUIRES easyhttpcpp/2.1.0 nlohmann_json/3.10.2 expat/2.4.1 GENERATORS cmake_find_package ) conan_cmake_autodetect(settings) if (WIN32 OR MINGW) set(target WIN32) set(options Poco:enable_netssl_win=True Poco:enable_netssl=False) endif () conan_cmake_install(PATH_OR_REFERENCE . BUILD missing REMOTE conancenter SETTINGS ${settings} OPTIONS ${options} PROFILE cross) find_package(expat) find_package(easyhttpcppeasyhttp) find_package(nlohmann_json) add_executable(wxocto ${target} main.cpp mainwindow/MainWindowBase.cpp mainwindow/MainWindowBase.h mainwindow/MainWindow.cpp mainwindow/MainWindow.h MainApp.cpp MainApp.h settings/wxOctoSettings.h settings/OctoPrintServerSettingsPage.cpp settings/OctoPrintServerSettingsPage.h settings/OctoPrintServerSettingsPagePanel.cpp settings/OctoPrintServerSettingsPagePanel.h helper.h octoprint/OctoprintFile.cpp octoprint/OctoprintFile.h octoprint/FetchFilesThread.cpp octoprint/FetchFilesThread.h octoprint/OctoprintJob.cpp octoprint/OctoprintJob.h octoprint/FetchPrintStatusThread.cpp octoprint/FetchPrintStatusThread.h octoprint/OctoApiEventIds.h octoprint/SelectAndPrintFileThread.cpp octoprint/SelectAndPrintFileThread.h octoprint/CancelPrintThread.cpp octoprint/CancelPrintThread.h octoprint/PausePrintThread.cpp octoprint/PausePrintThread.h octoprint/ResumePrintThread.cpp octoprint/ResumePrintThread.h octoprint/spoolmanager/FetchSpoolsThread.cpp octoprint/spoolmanager/FetchSpoolsThread.h octoprint/spoolmanager/OctoprintSpool.cpp octoprint/spoolmanager/OctoprintSpool.h octoprint/spoolmanager/OctoprintSpoolData.cpp octoprint/spoolmanager/OctoprintSpoolData.h spoolmanager/SpoolDialogBase.cpp spoolmanager/SpoolDialogBase.h spoolmanager/AddSpoolDialog.cpp spoolmanager/AddSpoolDialog.h spoolmanager/EditSpoolDialog.cpp spoolmanager/EditSpoolDialog.h) target_include_directories(wxocto PRIVATE ${wxWidgets_INCLUDE_DIRS}) target_link_libraries(wxocto expat::expat ${wxWidgets_LIBRARIES} easyhttpcppeasyhttp::easyhttpcppeasyhttp nlohmann_json::nlohmann_json)
What are some alternatives?
CPM.cmake - 📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
meson - The Meson Build System
Raylib-Basic-Project
conan - Conan - The open-source C and C++ package manager
cmake-init - The missing CMake project initializer
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
ninja - a small build system with a focus on speed
wxWidgets - Cross-Platform C++ GUI Library
xtd - Free open-source modern C++17 / C++20 framework to create console, GUI (forms like WinForms) and unit test applications and libraries on Microsoft Windows, Apple macOS and Linux.
sciter - Sciter: the Embeddable HTML/CSS/JS engine for modern UI development
GTK+ - Read-only mirror of https://gitlab.gnome.org/GNOME/gtk