Giter Club home page Giter Club logo

xcikit's Introduction

xcikit

1. About

Xcikit contains basic elements needed for creating 2D graphical applications. The focus is on text rendering and closely related UI rendering. Additional features are a custom scripting language and data serialization.

With xcikit you can:

  • render a few paragraphs of text,

  • style some parts of the text differently (colored highlights),

  • respond to mouse hover, click on the highlighted parts (spans),

  • create a basic UI with buttons, checkboxes, combo-boxes,

  • support scripting, provide sandboxed API for user scripts.

This should be enough for a program to render:

  • 2D sprites,

  • menu,

  • settings screen,

  • dialogs.

The library uses GLFW and Vulkan for graphics.

1.1. Name

XCI is 91 in Roman numerals. I perceive 91 as a beautiful number.

It might stand for Extended C++ Interface, but this is an afterthought.

2. Features

Note that xcikit is still under development and mostly experimental. There is no stable API. There are no releases. The features below are partially planned, but already implemented to some degree.

The planned features:

  • GPU oriented 2D graphics

  • advanced text rendering

  • UI widgets (not meant to replace Qt, but should be good enough for indie games)

  • data file management (VFS)

  • custom scripting language (it wasn’t planned originally, but it’s fun to design and implement)

  • support library (logging, eventloop etc.)

The features are divided into a set of libraries:

  • xci-widgets

  • xci-text

  • xci-graphics

  • xci-script

  • xci-data

  • xci-core

The separation of the code into libraries helps to create layers and avoid bi-directional dependencies. Basically, each library can depend only on the libraries listed below it. (TODO: draw a dependency graph)

The top-level xci-widgets provides UI components with event processing. It uses text layout engine xci-text, which can also be used separately.

All rendering goes through GLFW and Vulkan based xci-graphics library. Graphics lib can be used separately when neither UI nor text rendering is needed.

Optional xci-data library provides custom text and binary format for serialization / deserialization of hierarchical data structures. Think of Json and Google Protobuf, but without the complexity and bloat.

All the above libraries use xci-core, which contains miscellaneous utilities, This can also be used separately.

There is also header-only compat library, which is used to hide differences between compilers and OS’s. It does not implement any abstraction layer, but just provides what is available elsewhere.

Technologies:

  • C++20 as main programming language

  • CMake as build system

  • Conan as dependency manager

Supported compilers:

  • GCC >= 10

  • Clang >= 13

  • Xcode >= 13

  • Visual Studio >= 16

Any Unix-like OS with C++20 compliant compiler should work. Windows OS is also supported, to some extent. See Building on Windows.

3. Libraries

3.1. xci::widgets

Basic UI elements.

3.2. xci::text

Text rendering and text layout.

3.3. xci::graphics

The basic building blocks for rendering of text and UI elements.

3.4. xci::scene

Support for building 3D scenes.

3.5. xci::script

Experimental scripting language with bytecode interpreter.

Docs:

# Compile and run a script
fire examples/script/some.fire

# Compile script to bytecode
fire -c examples/script/some.fire --output-schema /tmp/firm.schema
# Inspect binary format with the compiled bytecode
dati examples/script/some.firm -s /tmp/firm.schema
# Execute compiled bytecode
fire examples/script/some.firm

3.6. xci::vfs

Virtual file system. Unified reading of files in filesystem directories and in archive files. Contains support for custom archive format - DAR.

3.7. xci::data

Serialization and deserialization of structured data.

3.8. xci::config

Parse and dump config file. The format is custom:

bool_item false   // true/false
int_item 1
float_item 2.3
string_item "abc\n"  // quotes are required, supports C-style escape sequences
group {
  value 1
  subgroup { foo 42; bar "baz" }  // semicolon is used as a delimiter for multiple items on same line
}

3.9. xci::math

Linear algebra: vectors, matrices, 2D rectangle, geometric computations.

3.10. xci::core

Core utilities. These have little or no dependencies. Mostly just stdlib + OS API.

  • Buffer (types.h) - Owned blob of data, with deleter.

  • FpsCounter - Tracks delays between frames and computes frame rate.

  • Logger (log.h) - Logging functions.

  • SharedLibrary - Thin wrapper around dlopen. For plugins.

  • TermCtl - Colored output for ANSI terminals.

  • Vfs - Unified reading of regular files and archives. Mount the archive to virtual path and read contained files in same fashion as regular files.

  • bit.h - custom bit_copy, bit_read, similar to C++20 bit_cast

  • event.h - System event loop (abstraction of kqueue / epoll).

  • dispatch.h - Watch files and notify on changes. Useful for auto-reloading of resource files.

  • file.h - Read whole files. Path utilities (dirname, basename, …).

  • format.h - Formatted strings. Similar to Python’s format().

  • rtti.h - C++ demangled type names.

  • string.h - String manipulation, unicode utilities.

  • sys.h - A replacement for std::this_thread::get_id(), providing the canonical TID.

3.11. xci::compat

Fill gaps between different systems and compilers.

  • dl.h - dlopen etc. for Windows

  • endian.h - Linux-like macros provided for macOS and Windows

  • macros.h - XCI_UNREACHABLE, XCI_INLINE, XCI_UNUSED

  • unistd.h - Minimal Unix compatibility header for Windows

4. Tools

Included are some tools build on top of the libraries. Check them on separate pages:

5. How to build

TL;DR:

5.1. Dependencies

Tools:

  • CMake - build system

  • Conan - optional package manager

Libraries:

Obtaining dependencies:

  • Install them into system or otherwise make them visible to CMake’s find_* functions.

    • This works for almost all deps, except fmt, pfr, magic_enum.

    • Deps that must be installed this way: libzip, hyperscan.

  • Build deps from Git locally for this project

    • Run ./build_deps.sh, it will clone each repo and build it via CMake to ./.deps

    • The build script picks up these deps as if they were installed in the system

  • Install them via Conan. See How to build from IDE or build with build.sh which runs conan automatically.

    • Conan can be skipped via --no-conan-deps (if you have all deps preinstalled in system or in ./.deps)

Installing the dependencies with system package managers:

  • Debian:

    apt install libzip-dev cmake ninja-build
    pip3 install conan
  • macOS (Homebrew):

    # Tools
    brew install cmake ninja ccache
    pip3 install conan
    # Libs
    brew install pegtl libzip freetype sdl2 doxygen catch2 google-benchmark hyperscan
  • macOS (MacPorts):

    # Tools
    port install cmake ninja ccache
    pip3 install conan
    # Libs
    port install vulkan-* MoltenVK libsdl2 harfbuzz-devel hyperscan libfmt catch2

5.2. Using build script

The complete build process is handled by a build script:

./build.sh

When finished, you’ll find the temporary build files in build/ and installation artifacts in artifacts/.

Both scripts are incremental, so it’s safe to run them repeatably. They do only the required work and re-use what was done previously.

5.3. Manual build with CMake

Detailed build steps (these are examples, adjust parameters as needed):

# Prepare build directory
mkdir build && cd build

# Install dependencies using Conan.
conan install .. --build missing

# Configure
cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=~/sdk/xcikit

# Run CMake UI to adjust the parameters
ccmake ..

# Build
cmake --build .

# Run unit tests
cmake --build . --target 'test'

# Install artifacts
cmake --build . --target 'install'

5.4. Building on macOS older than Catalina (10.15)

Using MacPorts, install Clang 14 and libc++:

port install clang-14 macports-libcxx

Then create a clang14-toolchain.cmake file with content like this:

set(CMAKE_CXX_COMPILER /opt/local/bin/clang++-mp-14)
add_compile_options(-nostdinc++ -I/opt/local/include/libcxx/v1 -D_LIBCPP_DISABLE_AVAILABILITY)
add_link_options(-L/opt/local/lib/libcxx)

Run the build with the toolchain:

./build.sh --toolchain clang14-toolchain.cmake

5.5. Building on Windows

Almost everything is portable and should work:

  • build scripts (using git-bash)

  • dependencies via Conan

  • build with CMake + ninja + cl.exe

  • all libraries, examples, tests

What doesn’t work:

  • find_file (ff) tool - it’s built on low-level unix APIs, probably unportable

5.5.1. How to build from command line

  1. (Optional) Enable Developer mode to obtain ability to create symlinks

  2. Install Git Bash and run it

  3. We need these commands to work:

    • git (to clone the project)

    • cmake, ninja (build tools)

    • conan 1.x (C++ package manager)

    • cl (VS compiler)

  4. Beginning from the last one:

    • Find vcvars64.bat in Visual Studio installation. I have Visual Studio Build Tools 2019 and it’s here: "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat" (The directory slightly differs for Community and Professional edition.)

    • Paste the path including the quotes into Git Bash and execute it.

    • Now we should have cl, cmake and ninja working.

    • (For convenience, add Git Bash + VS configuration to Windows Terminal.)

  5. Install conan: pip install conan (Python should also work via VS developer tools)

  6. Run ./build.sh

Note that the build script detects "MINGW64_NT" as target platform, but this is not true. It builds native Windows binaries. The string is just the output of uname in Git Bash. I don’t know any better way how to detect host platform on Windows (please tell me if you know).

5.5.2. How to build from IDE with CMake support

Works with Clion, and may work with Visual Studio (I did not test).

Separately, clone this fork of cmake-conan which adds CONAN_OPTIONS: https://github.com/rbrich/cmake-conan

Then open the xcikit project, let the IDE load the top-level CMakeLists.txt.

Add these CMake options in the IDE settings:

-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/path/to/cmake-conan/conan_provider.cmake
-DCONAN_OPTIONS="-o;xcikit/*:system_sdl=True;-o;xcikit/*:system_vulkan=True;-o;xcikit/*:system_freetype=True;-o;xcikit/*:system_harfbuzz=True;-o;xcikit/*:system_zlib=True"

The CONAN_OPTIONS are just an example, in this case Conan will skip installing graphical libs, so they can be searched in the system instead. Those libs must be preinstalled.

5.5.3. Troubleshooting

If linking tests fails with unresolved symbols from catch2 (error LNK2019: unresolved external symbol …​), it’s because Conan picked incompatible package. To avoid issues like this, it’s best to completely disable the compatibility extension.

There are multiple ways how to disable it. One way is to edit cppstd_compat.py and make it always return []. Do not forget to also remove header comments, so Conan doesn’t destroy your changes.

5.6. Porting to Emscripten

The non-graphical components should build with Emscripten.

Install and link Emscripten so that this command works: emcc -v

Create a Conan profile for Emscripten, for example:

[settings]
os=Emscripten
arch=wasm
compiler=clang
compiler.version=14
compiler.libcxx=libc++
compiler.cppstd=20
build_type=MinSizeRel
[options]
[build_requires]
[conf]
# Find actual path Emscripten installation (or check CMake command line, when called with emcmake)
tools.cmake.cmaketoolchain:user_toolchain = [".../cmake/Modules/Platform/Emscripten.cmake"]
[env]
# Same as above, for older packages which do not use tools.cmake.CMakeToolchain
CONAN_CMAKE_TOOLCHAIN_FILE = .../cmake/Modules/Platform/Emscripten.cmake
CXXFLAGS=-flto=thin
LDFLAGS=-flto=thin

See a working example of such profile in the docker/emscripten directory.

Run the build (only 'core' and 'script' components work at this time):

./build.sh --debug --emscripten --profile emscripten core script

5.7. Building Conan package

The defaults in the Conan recipe (conanfile.py) are meant to make it easier for consumers (conan install) than packagers. That means, the tests and examples are built and packaged by default. Add the following options to build a package with only the development libs:

conan create . --build=missing -o xcikit:tools=False -o xcikit:examples=False -o xcikit:tests=False -o xcikit:benchmarks=False

6. How to use in a client program

6.1. Linking with a client using only CMake

Build and install XCI libraries (see "How to build" above), then use installed xcikit-config.cmake in your project’s CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)
project(example CXX)

find_package(xcikit REQUIRED)

add_executable(example src/main.cpp)
target_link_libraries(example xci-widgets)

In the case xcikit was installed into non-standard location, for example ~/sdk/xcikit, you need to set up CMAKE_PREFIX_PATH appropriately:

cmake -DCMAKE_PREFIX_PATH="~/sdk/xcikit" ..

6.2. Linking with a client using CMake and Conan

Add xcikit as dependency to conanfile.txt:

[requires]
xcikit/0.1@rbrich/stable

[generators]
cmake_paths

Then include generated conan_paths.cmake from project’s CMakeLists.txt:

if (EXISTS ${CMAKE_BINARY_DIR}/conan_paths.cmake)
    include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
endif()

Now find xcikit in usual way:

find_package(xcikit CONFIG REQUIRED)

Optionally, include XCI goodies:

include(XciBuildOptions)

Link with the libraries:

target_link_libraries(example xcikit::xci-text xcikit::xci-graphics)

xcikit's People

Contributors

rbrich avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

linecode

xcikit's Issues

[script] Functional syntax for casts and constructors

Replace syntax 1:Int by:

Int 1
Int(1)
1 .Int

The middle syntax is optional. The last one also, but will be nice as it mirrors the function calls.

In case of user-defined types, this can be used to construct them from underlying type.

The dot syntax requires a space to distinguish from float, but might be resolvable by parser.

find_file: grep binary files

Detect binary files and handle them specially - either switch to quiet mode (similar to grep tool), or switch to HEX mode and print context around the match - not lines, but 16 byte spans. Similar to hexdump -C:

0013f800  05 e9 00 25 00 20 40 1d  00 03 05 01 01 03 01 64  |...%. @........d|
0013f810  00 00 00 02 5f 04 01 02  02 70 00 4c 23 22 27 23  |...._....p.L#"'#|
0013f820  23 24 06 0b 1a 2b 01 26  26 27 26 23 22 07 06 15  |#$...+.&&'&#"...|
0013f830  15 23 34 37 36 33 32 17  16 17 17 16 17 16 33 32  |.#47632.......32|
0013f840  36 35 35 33 06 07 06 23  22 27 26 27 02 2b 0d 13  |6553...#"'&'.+..|
0013f850  08 14 08 24 13 14 7d 34  33 55 21 22 20 2f 39 14  |...$..}43U!" /9.|
0013f860  14 10 10 1f 28 7d 02 33  33 54 1e 22 20 32 05 5a  |....(}.33T." 2.Z|

[script] All functions are of type T -> R

I.e. all functions have exactly one parameter and one return value. Which makes a nice symmetry.

On the machine stack, multiple arguments are already compatible with a tuple. And empty tuple has zero size:

  • Void => no param or no return value
  • tuple => multiple params or multiple return values

This will simplify the compiler and add some elegance to the language.

It will be good for generic functions, e.g. fun<T,R> f:(T->R) { ... } takes a parameter which can bind to any possible function (and nothing else).

On the other hand, this is probably the end of partial functions. Instead of add 1, one will need to write fun a { a + 1}. Hopefully it's not much worse. Some syntax sugar could be added later, but it would require a special syntax or a keyword. Probably not worth it.

Regarding syntax of function definitions and applications, they should be unified, i.e. require tuple for multiple parameters:

// (emulate) no params
fun Void { ... } // (still? it currently crashes) OK
{ ... }  // same as fun Void

// 1 param
fun a { ... } // still OK
fun a:[Int] { ... } // still OK
fun a:(Int,Float) { ... } // still OK

// (emulate) multiple params
fun a b { ... }  // no longer allowed
fun (a,b) { ... }  // new syntax
fun a,b { ... } // same (parentheses are optional)

Function application:

afun    // still application for Void function, to allow variables-are-functions
afun ()  // same
afun 1   // one arg
afun [1]  // one list arg
afun (1, 2) // one tuple arg, stands for multiple args
afun 1,2,3  // same, parens and internal spaces are optional
afun(1,2,3)  // probably won't allow, as the space stands for the application operator
afun 1 2   // transitive application

The last one is now explicit transitive application.
It was implicit before, i.e. any arg that "overflowed" was applied to the returned function.
Now it's explicit: apply first arg to this function and second arg to some other function that is returned by the first one. It's a compile error if afun doesn't return a function.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

dockerfile
docker/clang_tidy.dockerfile
docker/debian_11.dockerfile
docker/debian_12.dockerfile
docker/emscripten.dockerfile
  • emscripten/emsdk 3.1.59
github-actions
.github/workflows/ci.yml
  • actions/checkout v4
  • actions/setup-python v5
  • ilammy/msvc-dev-cmd v1
  • hendrikmuhs/ccache-action v1.2.13
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/upload-artifact v4
.github/workflows/label.yml
  • actions/labeler v5
.github/workflows/linter.yml
  • actions/checkout v4
npm
extras/fire_script_js/package.json
  • xterm 5.3.0
  • xterm-addon-fit 0.8.0
  • xterm-addon-web-links 0.9.0
  • webpack 5.91.0
  • webpack-cli 5.1.4
regex
conandata.yml
  • fmt 10.2.1
  • range-v3 0.12.0
  • taocpp-pegtl 3.2.7
  • magic_enum 0.9.5
  • zlib 1.3.1
  • libzip 1.10.1
  • sdl 2.30.3
  • vulkan-loader 1.3.231
  • freetype 2.13.2
  • harfbuzz 8.3.0
  • pfr 2.2.0
  • catch2 3.6.0
  • benchmark 1.8.3

  • Check this box to trigger a request for Renovate to run again on this repository

Scripting language

Make the scripting language actually usable for scripting:

  • implement sort - hard with the current functional logic
  • bindings - call custom C++ functions from the script (#6)
  • bytecode files - save compiled module to a file, load it back later (#53)
  • Interpreter object with ability to run arbitrary code, call back to C++ and return result
  • add to README

Preprocessor

Doesn't need to be really a separate preprocessor, can be part of parser. A "preprocess-only" option will emit source code with conditionals and includes applied, #syntax can be either kept untouched or removed.

To avoid emitting special markers for compiler (real/logical line numbers etc.), the directives can be consumed directly by compiler, inclusion will create new file context but keep same AST, conditional will skip part of source, etc.

  • #syntax fire 1.0 (<lang> <major>[.<minor>]) - optional declaration of language version, checked by compiler ( part only informative, <lang> <major> must be known to the compiler, otherwise it emits error or warning)
  • #include
  • #if

New idea: still textual preprocessor, but the language will be the xci-script, i.e. you can define compile-time function that can be called to generate code.

problems when compile the xcikit project

Prepare build directory

mkdir build && cd build

Install dependencies using Conan.

conan install .. --build missing

Configure

cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=~/sdk/xcikit

all that is ok,but when i build use the cmd "cmake --build ." FAILED

D:\xcikit-master\build>cmake --build .
[1/168] Building CXX object src\xci\core\CMakeFiles\xci-core.dir\cmake_pch.cxx.obj
FAILED: src/xci/core/CMakeFiles/xci-core.dir/cmake_pch.cxx.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -I..\third_party\widechar_width.. /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /YcD:/xcikit-master/build/src/xci/core/CMakeFiles/xci-core.dir/cmake_pch.hxx /FpD:/xcikit-master/build/src/xci/core/CMakeFiles/xci-core.dir/./cmake_pch.cxx.pch /FID:/xcikit-master/build/src/xci/core/CMakeFiles/xci-core.dir/cmake_pch.hxx /showIncludes /Fosrc\xci\core\CMakeFiles\xci-core.dir\cmake_pch.cxx.obj /Fdsrc\xci\core\xci-core.dir\xci-core.pdb /FS -c src\xci\core\CMakeFiles\xci-core.dir\cmake_pch.cxx
D:/xcikit-master/build/src/xci/core/CMakeFiles/xci-core.dir/cmake_pch.hxx(5): fatal error C1083: 无法打开包括文件: “fmt/format.h”: No such file or directory
[2/168] Building CXX object src\xci\data\CMakeFiles\xci-data.dir\Crc32.cpp.obj
FAILED: src/xci/data/CMakeFiles/xci-data.dir/Crc32.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -ID:\boost_1_81_0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Fosrc\xci\data\CMakeFiles\xci-data.dir\Crc32.cpp.obj /Fdsrc\xci\data\CMakeFiles\xci-data.dir\xci-data.pdb /FS -c ..\src\xci\data\Crc32.cpp
..\src\xci\data\Crc32.cpp(8): fatal error C1083: 无法打开包括文件: “zlib.h”: No such file or directory
[3/168] Building CXX object examples\core\CMakeFiles\demo_termctl.dir\demo_termctl.cpp.obj
FAILED: examples/core/CMakeFiles/demo_termctl.dir/demo_termctl.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\examples -I..\src -Iinclude /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Foexamples\core\CMakeFiles\demo_termctl.dir\demo_termctl.cpp.obj /Fdexamples\core\CMakeFiles\demo_termctl.dir\ /FS -c ..\examples\core\demo_termctl.cpp
D:\xcikit-master\src\xci/core/TermCtl.h(10): fatal error C1083: 无法打开包括文件: “fmt/format.h”: No such file or directory
[4/168] Building CXX object src\xci\data\CMakeFiles\xci-data.dir\Schema.cpp.obj
FAILED: src/xci/data/CMakeFiles/xci-data.dir/Schema.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -ID:\boost_1_81_0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Fosrc\xci\data\CMakeFiles\xci-data.dir\Schema.cpp.obj /Fdsrc\xci\data\CMakeFiles\xci-data.dir\xci-data.pdb /FS -c ..\src\xci\data\Schema.cpp
D:\xcikit-master\src\xci\data\ArchiveBase.h(13): fatal error C1083: 无法打开包括文件: “fmt/core.h”: No such file or directory
[5/168] Building CXX object src\xci\data\CMakeFiles\xci-data.dir\BinaryReader.cpp.obj
FAILED: src/xci/data/CMakeFiles/xci-data.dir/BinaryReader.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -ID:\boost_1_81_0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Fosrc\xci\data\CMakeFiles\xci-data.dir\BinaryReader.cpp.obj /Fdsrc\xci\data\CMakeFiles\xci-data.dir\xci-data.pdb /FS -c ..\src\xci\data\BinaryReader.cpp
D:\xcikit-master\src\xci\data\ArchiveBase.h(13): fatal error C1083: 无法打开包括文件: “fmt/core.h”: No such file or directory
[6/168] Building CXX object src\xci\data\CMakeFiles\xci-data.dir\BinaryWriter.cpp.obj
FAILED: src/xci/data/CMakeFiles/xci-data.dir/BinaryWriter.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -ID:\boost_1_81_0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Fosrc\xci\data\CMakeFiles\xci-data.dir\BinaryWriter.cpp.obj /Fdsrc\xci\data\CMakeFiles\xci-data.dir\xci-data.pdb /FS -c ..\src\xci\data\BinaryWriter.cpp
D:\xcikit-master\src\xci\data\ArchiveBase.h(13): fatal error C1083: 无法打开包括文件: “fmt/core.h”: No such file or directory
[7/168] Building CXX object src\xci\data\CMakeFiles\xci-data.dir\Dumper.cpp.obj
FAILED: src/xci/data/CMakeFiles/xci-data.dir/Dumper.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\src -Iinclude -ID:\boost_1_81_0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Fosrc\xci\data\CMakeFiles\xci-data.dir\Dumper.cpp.obj /Fdsrc\xci\data\CMakeFiles\xci-data.dir\xci-data.pdb /FS -c ..\src\xci\data\Dumper.cpp
D:\xcikit-master\src\xci\data\ArchiveBase.h(13): fatal error C1083: 无法打开包括文件: “fmt/core.h”: No such file or directory
[8/168] Building CXX object examples\core\CMakeFiles\demo_chunked_stack.dir\demo_chunked_stack.cpp.obj
FAILED: examples/core/CMakeFiles/demo_chunked_stack.dir/demo_chunked_stack.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\examples -I..\src -Iinclude /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Foexamples\core\CMakeFiles\demo_chunked_stack.dir\demo_chunked_stack.cpp.obj /Fdexamples\core\CMakeFiles\demo_chunked_stack.dir\ /FS -c ..\examples\core\demo_chunked_stack.cpp
D:\xcikit-master\src\xci/core/log.h(12): fatal error C1083: 无法打开包括文件: “fmt/format.h”: No such file or directory
[9/168] Building CXX object examples\core\CMakeFiles\demo_event.dir\demo_event.cpp.obj
FAILED: examples/core/CMakeFiles/demo_event.dir/demo_event.cpp.obj
C:\PROGRA2\MICROS2\2019\PROFES1\VC\Tools\MSVC\14291.301\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING -D_SILENCE_CXX17_STRSTREAM_DEPRECATION_WARNING -I..\examples -I..\src -Iinclude /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd /W4 /wd4100 /wd4146 /wd4200 /wd4244 /wd4702 /wd5105 /permissive- /Zc:preprocessor /Zc:inline /Zc:__cplusplus /utf-8 /bigobj -std:c++latest /showIncludes /Foexamples\core\CMakeFiles\demo_event.dir\demo_event.cpp.obj /Fdexamples\core\CMakeFiles\demo_event.dir\ /FS -c ..\examples\core\demo_event.cpp
D:\xcikit-master\src\xci/core/log.h(12): fatal error C1083: 无法打开包括文件: “fmt/format.h”: No such file or directory

////////////////////////////////////////////////////////////////////////////////////
i don't know where the error occur, i use conan manage all packages, also fmt is installed in the directory of "C:\Users\rt.conan\data.."

sorry my poor english.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.