Skip to content

Releases: ChaseSunstrom/cforge

beta-v2.3.2

12 Dec 22:49

Choose a tag to compare

beta-v2.3.2 Pre-release
Pre-release

CForge Release beta-v2.3.2

Clean Command & Dependency Management Fixes

CForge beta-v2.3.2 is a patch release fixing issues with the clean command on Windows, dependency removal, and CPack license file handling.

Bug Fixes

CPack License File Optional

Problem: CPack always expected a LICENSE file at ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE, causing build errors when no license file existed.

Fix: Made the license file optional by checking if LICENSE, LICENSE.txt, or LICENSE.md exists before setting CPACK_RESOURCE_FILE_LICENSE. If none exist, the variable is simply not set.


Clean Command Fails with FetchContent

Problem: When fetch_content = true, the build/_deps directory contains cloned Git repositories with .git folders. On Windows, these have read-only pack files that cause std::filesystem::remove_all to fail with "Access is denied".

Fix: Added a robust force_remove_directory() function that:

  1. First tries standard remove_all
  2. If that fails, makes all files writable and retries
  3. On Windows, falls back to rmdir /s /q
  4. As a last resort, uses the robocopy mirror trick to force deletion

Clean Command Doesn't Remove cforge.hash

Problem: The cforge.hash file wasn't being cleaned up.

Fix: Added cforge.hash to the list of files cleaned by clean_cmake_files().


Remove Command Doesn't Handle Index Dependencies

Problem: cforge remove <package> only checked [dependencies.git] and [dependencies.vcpkg] sections, but index dependencies (like fmt = "11.1.4") are stored in the main [dependencies] section.

Fix: Added a call to also remove from the main [dependencies] section.


Files Changed

File Changes
src/core/workspace.cpp Optional license file handling for CPack
src/core/command_clean.cpp Robust directory removal, cforge.hash cleanup
src/core/command_remove.cpp Index dependency removal support

All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.3.1

09 Dec 02:26

Choose a tag to compare

beta-v2.3.1 Pre-release
Pre-release

CForge Release beta-v2.3.1

Registry & Lock File Fixes

CForge beta-v2.3.1 is a patch release addressing bugs in the new package registry integration, lock file generation, and dependency management commands.


Bug Fixes

Registry Lookup Path

  • Fixed registry looking in project directory instead of the cache at %LOCALAPPDATA%\cforge\registry
  • Changed registry reg(project_dir) to registry reg (4 occurrences in workspace.cpp)

Double "error" Prefix

  • Fixed duplicate "error" word in build output
  • Changed to fmt::print() instead of logger::print_error() which was adding a redundant prefix

cforge update --packages

  • Fixed --packages flag to actually update the package registry index
  • Now correctly calls registry::update(true) to pull the cforge-index repository

cforge add Section Handling

  • Fixed section matching to exactly match [dependencies] without catching subsections like [dependencies.git]
  • Added whitespace trimming for section header comparison
  • Fixed blank line insertion before new sections

Lock Command Directory Default

  • Changed default directory from vendor to deps to match all other commands

Improvements

Lock File FetchContent Support

Lock files now work correctly in both dependency modes:

Mode Behavior
fetch_content = true Generates lock file from cforge.toml + registry metadata
fetch_content = false Scans deps directory for installed packages

Automatic Lock File Generation

  • Lock files are now automatically generated during build
  • Uses generate_lockfile_from_config() for FetchContent mode
  • Uses update_lockfile() for clone mode

Registry Index Fixes

Fixed TOML syntax errors in cforge-index package definitions:

  • asio.toml — Fixed inline table syntax for requires
  • imgui.toml — Fixed inline table syntax for requires and groups
  • spdlog.toml — Fixed inline table syntax for requires and groups

Files Changed

File Changes
src/core/workspace.cpp Registry lookup path fix
src/core/command_build.cpp Error output fix, automatic lock file generation
src/core/command_update.cpp --packages flag fix
src/core/command_add.cpp Section matching improvements
src/core/command_lock.cpp Directory default, FetchContent support
include/core/lockfile.hpp New generate_lockfile_from_config() function

All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.3.0

09 Dec 00:17

Choose a tag to compare

beta-v2.3.0 Pre-release
Pre-release

CForge Release beta-v2.3.0

Package Registry Integration

CForge beta-v2.3.0 introduces integration with the cforge-index package registry, bringing a seamless dependency management experience to C/C++ development.

The cforge-index is a consolidated list of popular C/C++ libraries that can be easily pulled from cforge without having to specify a git repository URL. The new index is fully backwards compatible with CMake, which means all generated CMake code from cforge will compile without the use of cforge.

New Features

Package Registry Integration

CForge now connects to the cforge-index package registry, enabling simple dependency management similar to npm, Cargo, or pip.

cforge search json              # Find JSON libraries
cforge info fmt --versions      # Show package details and available versions
cforge add [email protected]           # Add a dependency
cforge remove spdlog            # Remove a dependency
cforge update --packages        # Refresh the registry cache

Features:

  • Local registry cache at ~/.cforge/registry
  • Package metadata including description, license, keywords, and categories
  • Automatic Git tag discovery for version resolution
  • Semantic versioning with wildcard support (1.2.*, 1.*, *)

New Commands

Command Description
cforge search <query> Search for packages in the registry
cforge info <package> Show detailed package information
cforge add <package>[@version] Add a dependency to cforge.toml
cforge remove <package> Remove a dependency from cforge.toml
cforge update --packages Update the package registry index
cforge lock Manage dependency lock file

Examples:

cforge add [email protected]                 # Add specific version
cforge add spdlog --features async    # Add with features
cforge add mylib --git https://github.com/user/mylib --tag v1.0  # Direct Git

Simplified Dependency Syntax

Declare dependencies in cforge.toml with a clean, intuitive syntax:

[dependencies]
fmt = "11.1.4"          # Exact version
spdlog = "1.15.*"       # Latest 1.15.x
nlohmann_json = "*"     # Latest version

[dependencies.spdlog]
version = "1.15.0"
features = ["async"]

FetchContent Integration

Dependencies are now fetched via CMake FetchContent by default—no pre-cloning required.

Mode Behavior
fetch_content = true (default) CMake downloads dependencies during configure
fetch_content = false Pre-clones to vendor/ directory, uses add_subdirectory()
[dependencies]
fetch_content = true    # Use CMake FetchContent (default)
directory = "vendor"    # Clone directory when fetch_content = false

Dependency Sources

CForge now supports five dependency sources:

Source Description
INDEX cforge-index registry (default)
GIT Direct Git repository
VCPKG vcpkg package
SYSTEM System library (pkg-config)
PROJECT Local project path

Files Changed

New Files:

  • include/core/registry.hpp — Registry class and types
  • src/core/registry.cpp — Registry implementation
  • include/core/lockfile.hpp — Lock file management
  • src/core/command_search.cppsearch command
  • src/core/command_info.cppinfo command
  • src/core/command_add.cppadd command
  • src/core/command_remove.cppremove command

Updated Files:

  • src/core/command_update.cpp — Added --packages flag
  • src/core/command_build.cpp — Index dependency resolution, FetchContent, hash fix
  • src/core/workspace.cpp — CMake generation for index dependencies
  • src/core/command_help.cpp — Help text for new commands
  • README.md — New documentation
  • cforge-web/docs/dependencies.md — Comprehensive dependency docs

Note: All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.2.2

01 Dec 22:02

Choose a tag to compare

beta-v2.2.2 Pre-release
Pre-release

CForge Release beta-v2.2.2

Cross-Compilation Profiles & Documentation Overhaul

CForge beta-v2.2.2 introduces reusable cross-compilation profiles for targeting multiple platforms, fixes a critical build cache bug, and brings the documentation up to date.


Bug Fixes

CMakeLists.txt Regeneration Fix

  • Fixed issue where CMakeLists.txt was not being regenerated when cforge.toml was modified, even though the hash was changing
  • Root cause: clone_git_dependencies() was saving the cforge.toml hash before generate_cmakelists_from_toml() could detect changes
  • Location: src/core/command_build.cpp:352-353

New Features

Cross-Compilation Profiles

Define reusable cross-compilation configurations and switch between them with a single flag.

cforge build --profile android-arm64
cforge build -P raspberry-pi

Features:

  • Reusable profiles via [cross.profile.<name>] configuration
  • Environment variable expansion in toolchain paths (e.g., ${ANDROID_NDK})
  • Custom CMake variables per profile

Updated Cross-Compilation Configuration

New unified [cross] section format:

[cross]
enabled = true

[cross.target]
system = "Linux"
processor = "aarch64"
toolchain = "path/to/toolchain.cmake"

[cross.compilers]
c = "/usr/bin/aarch64-linux-gnu-gcc"
cxx = "/usr/bin/aarch64-linux-gnu-g++"

[cross.paths]
sysroot = "/path/to/sysroot"
find_root = "/path/to/find/root"

[cross.variables]
MY_VAR = "value"

Documentation

GitHub Pages Workflow Fix

  • Fixed deploy-docs.yml to use cforge-web directory instead of docs
  • Documentation now rebuilds when README.md or cforge-web/** changes

Updated Documentation Pages

Page Changes
cross-compilation.md Complete rewrite with profiles, examples, and troubleshooting
project-configuration.md Updated to match current config format (cpp_standard, binary_type, build.config.<name>)
dependencies.md Added system dependencies (find_package, pkg_config, manual), subdirectory dependencies
workspaces.md Updated workspace commands and project dependency format

Files Changed

  • src/core/command_build.cpp — Cross-compilation profiles, --profile flag, hash fix
  • src/core/command_init.cpp — Updated template with cross-compilation profiles
  • src/core/command_help.cpp — Added --profile flag to help text
  • .github/workflows/deploy-docs.yml — Fixed to use cforge-web
  • cforge-web/docs/*.md — Multiple documentation updates

Note: All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.2.1

30 Nov 08:08

Choose a tag to compare

beta-v2.2.1 Pre-release
Pre-release

CForge Release beta-v2.2.1

Bug Fixes & Stability

CForge beta-v2.2.1 is a patch release focused on fixing critical bugs in the build pipeline, Windows compatibility, and the self-update mechanism.


Bug Fixes

Compiler Warning in Package Command

  • Replaced strncpy with snprintf in command_package.cpp to eliminate deprecation warning

CI Pipeline Timeout on Windows

  • Increased CMake build timeout from 60 seconds to 600 seconds (10 minutes) in command_build.cpp
  • Prevents Windows CI builds from timing out on larger projects

"Permission denied" Error in Windows CI

  • Added --no-build flag to packaging step in release.yaml
  • Prevents cforge from trying to rebuild itself while running

Install Script Version Parsing

  • Updated install.ps1 to handle CMake versions with suffixes like -rc1, -alpha
  • Uses regex extraction with try/catch fallback for robust parsing

CMake Warnings Treated as Errors

  • Modified install.ps1 to temporarily set $ErrorActionPreference = "Continue" during CMake operations
  • Stderr warnings no longer cause script failure

Windows min/max Macro Conflict

  • Added #define NOMINMAX in command_watch.cpp
  • Prevents Windows macros from conflicting with std::filesystem::file_time_type::min()

cforge update Command

  • Rewrote self-update logic to actually clone, build, and install the new binary
  • Previously only cloned the repository without completing the update

Windows File Locking During Update

  • Added proper error handling for backup file removal
  • Handles read-only git files when cleaning up temp directories

Improvements

Consistent Install Paths

  • Both install.ps1 and cforge update now install to the same directory structure:
    <prefix>/installed/cforge/bin/cforge.exe
    

Public PATH Update API

  • Exposed update_path_env functionality in installer.hpp
  • Now available for use by the update command and external tooling

Note: All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.2.0

30 Nov 07:13

Choose a tag to compare

beta-v2.2.0 Pre-release
Pre-release

CForge Release beta-v2.2.0

Developer Experience & Build Reliability

CForge beta-v2.2.0 brings powerful new commands for day-to-day development workflows, along with significant improvements to build reliability and error reporting.


New Commands

cforge watch — File Watching & Auto-Rebuild

Automatically rebuild your project when source files change.

cforge watch                  # Watch and rebuild on changes
cforge watch --run            # Watch, rebuild, and run executable
cforge watch -c Release       # Watch with Release configuration
cforge watch --interval 1000  # Custom poll interval (ms)

Features:

  • Watches .cpp, .cc, .cxx, .c, .hpp, .hxx, .h, .toml files
  • Automatically ignores build/, .git/, deps/, vendor/ directories
  • Optional --run flag to execute after successful builds

cforge bench — Benchmark Runner

Run performance benchmarks with Google Benchmark support.

cforge bench                      # Run all benchmarks
cforge bench --filter 'BM_Sort'   # Run matching benchmarks
cforge bench --json > results.json  # JSON output
cforge bench --csv                # CSV output

Configuration (cforge.toml):

[benchmark]
directory = "bench"
target = "my_benchmarks"

cforge tree — Dependency Visualization

Visualize your project's dependency tree with color-coded output.

cforge tree        # Show dependency tree
cforge tree -d 2   # Limit depth
cforge tree --all  # Include transitive dependencies

Color Coding:

Color Type
🔵 Cyan Git dependencies
🟣 Magenta vcpkg dependencies
🟡 Yellow System dependencies
🟢 Green Project dependencies (workspace)

cforge new — Template Generator

Quickly scaffold new files from templates.

cforge new class MyClass         # Create MyClass.hpp + MyClass.cpp
cforge new class MyClass -n myproj  # With namespace
cforge new header utils          # Header-only file
cforge new interface IService    # Abstract interface
cforge new struct Config         # Struct definition
cforge new test MyClass          # Test file

Available Templates: class, header, struct, interface, test, main


cforge doc — Documentation Generation

Generate API documentation with Doxygen.

cforge doc          # Generate documentation
cforge doc --init   # Create Doxyfile for customization
cforge doc --open   # Generate and open in browser
cforge doc -o api-docs  # Custom output directory

cforge lock — Reproducible Builds

Manage dependency lock files for reproducible builds.

cforge lock           # Generate/update lock file
cforge lock --verify  # Check deps match lock file
cforge lock --force   # Regenerate lock file
cforge lock --clean   # Remove lock file

Best Practices:

  1. Commit cforge.lock to version control
  2. Run cforge lock --verify in CI pipelines
  3. Run cforge lock after adding/updating dependencies

cforge fmt — Code Formatting

Format source code with clang-format.

cforge fmt                # Format all files in place
cforge fmt --check        # Check without modifying
cforge fmt --diff         # Show what would change
cforge fmt --style=google # Use Google style

cforge lint — Static Analysis

Run static analysis with clang-tidy.

cforge lint                      # Run all checks
cforge lint --fix                # Apply automatic fixes
cforge lint --checks='modernize-*'  # Specific checks

cforge completions — Shell Completions

Generate tab-completion scripts for your shell.

cforge completions bash >> ~/.bashrc
cforge completions zsh >> ~/.zshrc
cforge completions powershell >> $PROFILE
cforge completions fish > ~/.config/fish/completions/cforge.fish

Build System Improvements

Extended Build Timeouts

  • Increased CMake build timeout from 60s to 600s (10 minutes)
  • Prevents false failures on slower CI runners and large Release builds

Self-Build Protection

  • Fixed Windows packaging issue where cforge.exe couldn't rebuild itself while running
  • Added --no-build flag for packaging when build is already complete

New Dependency Hash Format

  • Migrated from .cforge_dependency_hashes to cforge.hash
  • Human-readable TOML format for dependency state tracking

Error Reporting Enhancements

Deduplicated Error Messages

  • Fixed duplicate error reporting (e.g., GCC-UNDECL and COMPILER-UNDECLARED for same error)
  • Intelligent deduplication preserves the most detailed diagnostic

Cleaner Output

  • Removed redundant → Error details: prefix
  • Streamlined formatting for better readability

Code Quality & Compatibility

  • GCC 15 Compatibility: Fixed all compiler warnings
  • Security: Replaced unsafe strncpy with snprintf

CI/CD Pipeline

Multi-Platform Support

  • Windows x64 (MSVC)
  • Linux x64 (GCC)
  • macOS x64 & ARM64 (Clang)

Package Formats

Platform Formats
Windows ZIP
Linux TGZ, DEB
macOS TGZ

Installation

Upgrade to beta-v2.2.0:

git clone https://github.com/ChaseSunstrom/cforge.git
cd cforge

# Windows
.\scripts\bootstrap.ps1

# Linux/macOS
./scripts/bootstrap.sh

Full Command Reference

Command Description
init Initialize a new project or workspace
build Build the project
clean Clean build artifacts
run Build and run the project
test Run tests
package Create distributable packages
deps Manage Git dependencies
vcpkg Manage vcpkg dependencies
install Install project to system
add Add a dependency
remove Remove a dependency
update Update cforge
ide Generate IDE project files
list List dependencies or projects
lock Manage dependency lock file
fmt Format code with clang-format
lint Static analysis with clang-tidy
watch Watch and auto-rebuild
completions Generate shell completions
doc Generate documentation
tree Visualize dependency tree
new Create files from templates
bench Run benchmarks

Note: All existing workflows remain compatible.

Please report issues at [github.com/ChaseSunstrom/cforge/issues](https://github.com/ChaseSunstrom/cforge/issues)

beta-v2.1.0

16 May 14:46

Choose a tag to compare

beta-v2.1.0 Pre-release
Pre-release

CForge Release beta-v2.1.0

Visual Studio Project & Workspace Generation

CForge beta-v2.1.0 introduces first-class support for generating Visual Studio solutions and projects, bringing CForge on par with tools like Premake when it comes to dependency-aware workspace management.


Key Improvements

Visual Studio Generation Enhancements

  • Solution & Project Files

    • Full generation of .sln, .vcxproj, and .filters files
    • Automatic grouping of source/header files into filters for cleaner IDE view
  • Dependency-Aware Build Ordering

    • Projects linked by target dependencies are correctly ordered in the solution
    • Transitive dependencies automatically discovered and added
  • Configuration & Platform Support

    • Multi-config (Debug/Release) and multi-platform (x86/x64/ARM) support
    • Inherited settings for common configurations across all projects

Workspace Management

  • Workspace Definition File

    • Configure per-project settings (output paths, include dirs, preprocessor macros)
  • Selective Generation

    • Custom solution folders for logical grouping

Progress & Error Reporting

  • IDE-Style Build Feedback

    • Color-coded status messages to match MSBuild conventions
  • Error Parsing Improvements

    • Enhanced regex-based parsing of MSVC errors/warnings
    • Jump-to-file annotations for quick navigation in IDE

Usage Examples

Generate a Visual Studio 2022 Solution

cforge ide vs

Installation

Upgrade to beta-v2.1.0:

git clone https://github.com/ChaseSunstrom/cforge.git
cd cforge
.\scripts\bootstrap.ps1

Note: Existing CMakeLists.txt–based workflows remain unchanged; Visual Studio generation is entirely additive. Let us know how it fits into your Windows development workflow!

beta-v2.0.0

11 May 03:20

Choose a tag to compare

beta-v2.0.0 Pre-release
Pre-release

CForge Release beta-v2.0.0

Summary

CForge v2.0.0-beta marks the next evolution of our build system—now implemented in modern C and C++ after an interim Rust rewrite. This change brings tighter integration with existing C/C++ codebases, lower memory overhead, and more direct control over platform-specific optimizations. You’ll still get the revamped cforge.toml syntax, first-class workspace support, smarter dependency resolution, and built-in testing/packaging hooks. We’ve stabilized core features and look forward to your feedback on the new native plugin API.


Highlights

  • Native C & C++ Core
    After experimenting with Rust, we’ve re-implemented CForge’s engine in C and C++ for seamless integration with your tooling and faster startup times.

  • Consistent Config with cforge.toml
    Same clean, TOML-based layout for dependencies, build options, tests, and packaging metadata (although updated settings).

  • Plugin System (Native API)
    Fully C/C++-based plugin interface—write plugins that link directly against CForge without any FFI layers.

  • Workspace Management
    Multi-crate/workspace support remains, with per-package overrides and unified commands:

    cforge build
    cforge test
    cforge package
  • Integrated Testing & Packaging
    Declare your tests and packaging rules right in cforge.toml—no external scripts needed.


New Features

1. Smarter Dependency Resolution

  • Unified handling of vcpkg, Git, and system libraries in a single pass
  • On-disk caching for offline or containerized builds

2. Parallel & Incremental Builds

  • Change detection to rebuild only what’s necessary
  • Parallel job scheduling guided by CPU count (--jobs)

3. Enhanced CLI

  • Verbosity control with -v, (verbose) and -q (quiet)
  • cforge clean for environment and config diagnostics

4. Built-in Test Runner

  • Execute unit and integration tests via cforge test
  • Filter tests by name or tags for targeted runs

Migration Guide

  1. Install v2.0.0-beta

    .\scripts\bootstrap.ps1
  2. Update cforge.toml

    • Rename [deps][dependencies]
    • Relocate build flags under [build]
  3. Re-initialize Workspace (if needed)

    cforge workspace init
  4. Clean & Build

    cforge clean
    cforge build

Performance Improvements

  • Cold builds up to 50% faster thanks to minimal startup overhead in C/C++
  • Warm rebuilds often complete in <1 s on mid-sized projects

Known Issues

  • Plugin API still evolving—possible breaking changes before stable 1.0.0
  • Windows MSI installer coming soon; use bootstrap scripts for now
  • Occasional lockfile contention on network drives


Updated cforge.toml and cforge.workspace.toml syntax

cforge.toml

[project]
name = "cforge"
version = "2.0.0"
description = "A C/C++ build tool with dependency management"
cpp_standard = "17"
binary_type = "executable"
authors = ["Chase Sunstrom <[email protected]>"]
homepage = "https://github.com/ChaseSunstrom/cforge"
repository = "https://github.com/ChaseSunstrom/cforge.git"
license = "MIT"

[build]
build_type = "Debug"
directory = "build"
source_dirs = ["src"]
include_dirs = ["include"]

[build.config.debug]
defines = ["DEBUG=1", "FMT_HEADER_ONLY=ON"]
flags      = ["DEBUG_INFO", "NO_OPT"]

[build.config.release]
defines    = ["NDEBUG=1", "FMT_HEADER_ONLY=ON"]
flags      = ["OPTIMIZE"]

[test]
enabled = true

[package]
enabled = true
generators = ["ZIP", "TGZ", "DEB"]
vendor = "Chase Sunstrom"
contact = "Chase Sunstrom <[email protected]>"

[dependencies]
directory = "vendor"

[dependencies.git]
tomlplusplus = { url = "https://github.com/marzer/tomlplusplus.git", tag = "v3.4.0" }
fmt = { url = "https://github.com/fmtlib/fmt.git", tag = "11.1.4" }

cforge.workspace.toml

[workspace]
name = "workspace"
description = "A C++ workspace created with cforge"

# Projects in legacy format: name:path:is_startup_project
# projects = [
#  "proj1:proj1:true",
#  "proj2:proj2:false",
#  "proj3:proj3:false"
# ]

[[workspace.project]]
name = "proj1"
# optional path
# path = "projects/proj1"
startup = true

[[workspace.project]]
name = "proj2"
startup = true

[[workspace.project]]
name = "proj3"
startup = false

# Main project is the first project
main_project = "proj1"

Acknowledgments

Thanks to our early testers, GitHub contributors, and everyone filing issues and PRs. Your feedback has been invaluable in shaping CForge’s C/C++ core into a faster, more flexible tool.


Download v2.0.0-beta today and join us on GitHub Discussions—or file an issue if you hit any bugs or have feature ideas. Happy building!

beta-v1.5.0

01 Apr 15:14

Choose a tag to compare

beta-v1.5.0 Pre-release
Pre-release

CForge Release beta-v1.5.0

Build System and UI Improvements

CForge beta-v1.5.0 addresses key usability issues, focusing on improved configuration handling, more reliable progress feedback, and better error reporting.

Key Improvements

CMake Configuration Enhancements

  • Fixed C++ Standard Setting: Properly generates CMake configuration for C/C++ language standards
  • Improved Build Variant Support: Better handling of variant-specific settings in CMake generation
  • Enhanced Multi-Config Support: More reliable handling of Debug/Release configurations

Progress Reporting System

  • Redesigned Spinner Interface: More reliable progress indicators during builds
  • Enhanced Status Updates: Clearer indication of current build operations
  • Improved Error Visualization: Better formatting of compiler errors

Workspace Functionality

  • Dependency Order Building: More reliable workspace builds respecting project dependencies
  • Better Workspace Navigation: Enhanced tools for managing multi-project workspaces
  • Improved Package Configuration: More robust package configuration for workspace projects

Technical Refinements

  • Thread Safety Improvements: Fixed race conditions in progress display code
  • Error Handling Enhancements: More detailed and better formatted error messages
  • CMake Generation Improvements: More robust handling of paths and configurations
  • Better Cross-Compilation Support: Enhanced platform-specific configurations

Detailed Improvements

  • Fixed issue where C/C++ standard wasn't properly written to CMake configuration
  • Improved spinner functionality with better cleanup and status handling
  • Fixed potential deadlocks in progress reporting system
  • Better handling of build paths with cross-compilation targets
  • More reliable package configuration generation

Usage Examples

Generate CMake with proper C++ standard support:

cforge clean
cforge build

View detailed build progress with verbose output:

cforge build --verbosity verbose

Build a workspace with proper dependency ordering:

cforge build

Installation

Update to the latest version:

cargo install [email protected]

Bug Fixes

  • Fixed C/C++ standard not being correctly written to CMake files
  • Resolved spinner visualization issues during long-running operations
  • Fixed potential race conditions in progress reporting
  • Improved error handling during build failures
  • Enhanced path resolution for cross-compilation targets

Limitations

  • Complex project configurations might still require manual CMake customization
  • Some compiler-specific features may require additional configuration

beta-v1.4.3

26 Mar 07:53

Choose a tag to compare

beta-v1.4.3 Pre-release
Pre-release

CForge Release beta-v1.4.3

Packaging System Improvements

CForge beta-v1.4.3 addresses critical issues in the packaging system, focusing on reliability and cross-platform compatibility.

Key Improvements

Packaging System Enhancements

  • Improved NSIS installer detection and installation on Windows
  • Enhanced cross-platform package generation support
  • Implemented fallback strategies for package generation
  • More informative error messages during packaging

Build Configuration Support

  • Better handling of Debug/Release configurations during packaging
  • Improved support for package formats (ZIP, NSIS, DEB, RPM)
  • Enhanced dependency detection mechanisms

Technical Refinements

  • Resolved path resolution issues in package generation
  • Improved CMake configuration for packaging
  • Enhanced error capture and reporting
  • More robust package type conversion and validation

Detailed Improvements

  • Fixed inconsistent package naming across operating systems
  • Improved handling of project metadata during package creation
  • Enhanced compatibility with compiler and build system configurations

Usage Examples

Basic package generation:

cforge package

Specifying package type:

cforge package --type zip

Verbose package generation:

cforge package --verbosity verbose

Installation

Update to the latest version:

cargo install [email protected]

Bug Fixes

  • Resolved NSIS installer detection issues on Windows
  • Fixed path resolution for package generation
  • Improved error handling during package creation
  • Enhanced cross-platform package generation support

Limitations

  • Package generation may require platform-specific tools
  • Some complex project configurations might need manual intervention