namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lernen:conan

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
lernen:conan [2022-05-22 16:04] – angelegt - Externe Bearbeitung 127.0.0.1lernen:conan [2023-10-09 16:14] (aktuell) – [Conan als Paketmanager] rrichter
Zeile 26: Zeile 26:
  
 <code - CMakeLists.txt> <code - CMakeLists.txt>
-cmake_minimum_required(VERSION 3.12)+cmake_minimum_required(VERSION 3.27)
 project(cmake_test VERSION 0.0.1 LANGUAGES CXX) project(cmake_test VERSION 0.0.1 LANGUAGES CXX)
  
-# Bereitstellen externer Bibliotheken  
 find_package(doctest REQUIRED) find_package(doctest REQUIRED)
  
-# Programm, Quellen, Eigenschaften des Ziels (target)     
 add_executable(mytests main.test.cpp sqr.cpp) add_executable(mytests main.test.cpp sqr.cpp)
-target_compile_features(mytests PRIVATE cxx_std_20) +target_compile_features(mytests PRIVATE cxx_std_23)
- +
-# Einbinden von Bibliotheken+
 target_link_libraries(mytests PRIVATE doctest::doctest) target_link_libraries(mytests PRIVATE doctest::doctest)
 </code> </code>
Zeile 46: Zeile 42:
 ===== Conan als Paketmanager ===== ===== Conan als Paketmanager =====
  
-[[https://conan.io|Conan]] ist ein Paketmanager für C++-Bibliotheken, der unter Linux und Windows nutzbar ist. Die Datei ''conanfile.txt''+[[https://conan.io|Conan]] (Version 2.0) ist ein Paketmanager für C++-Bibliotheken, der unter Linux und Windows nutzbar ist. Die Datei ''conanfile.txt''
  
 <code - conanfile.txt> <code - conanfile.txt>
 [requires] [requires]
-doctest/2.4.8 +doctest/2.4.11 
-fmt/8.1.1+fmt/10.1.1
  
 [generators] [generators]
-cmake_find_package +CMakeDeps 
-cmake_paths+CMakeToolchain
 </code> </code>
 listet erforderliche Bibliotheken mit Versionsangabe auf und legt fest, welche Skripte für CMake erzeugt werden sollen. listet erforderliche Bibliotheken mit Versionsangabe auf und legt fest, welche Skripte für CMake erzeugt werden sollen.
Zeile 69: Zeile 65:
 cd build cd build
 conan install .. conan install ..
-cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_paths.cmake+cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
 cmake --build . cmake --build .
 </code> </code>
Zeile 76: Zeile 72:
 <code - setup_conan_cmake_minGW.bat> <code - setup_conan_cmake_minGW.bat>
 mkdir build  mkdir build 
 +conan install . -of build --build=missing --profile=mingw
 cd build cd build
-conan install .. --build=missing --profile=mingw +cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug
-cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_paths.cmake -G "MinGW Makefiles"+
 cmake --build . cmake --build .
 </code> </code>
Zeile 84: Zeile 80:
  
 <code - mingw> <code - mingw>
-# copy this file to C:\Users\myUsername\.conan\profiles\ +# copy this file to C:\Users\myUsername\.conan2\profiles\
-[build_requires]+
 [settings] [settings]
-    os=Windows 
-    os_build=Windows 
     arch=x86_64     arch=x86_64
-    arch_build=x86_64+    os=Windows
     compiler=gcc     compiler=gcc
-    compiler.version=11.2+    compiler.version=13.2
     compiler.libcxx=libstdc++11     compiler.libcxx=libstdc++11
-    compiler.cppstd=20+    compiler.cppstd=23
     compiler.exception=seh     compiler.exception=seh
     compiler.threads=posix     compiler.threads=posix
     build_type=Debug     build_type=Debug
-[options] 
-[env] 
 </code> </code>
-Dieses Profil wird beim aktuellen Nutzer ''%%C:\Users\MyUsername%%'' unter ''%%.conan\profiles%%'' hinterlegt. Compiler-Version, 32- oder 64bit-Architektur und andere Optionen sind je nach genutztem Compiler anzupassen.+Dieses Profil wird beim aktuellen Nutzer ''%%C:\Users\MyUsername%%'' unter ''%%.conan2\profiles%%'' hinterlegt. Compiler-Version, 32- oder 64bit-Architektur und andere Optionen sind je nach genutztem Compiler anzupassen.
 Nun ist im C++-Quelltext Nun ist im C++-Quelltext
  
-<code cpp>+<code cpp main.cpp>
 #include <fmt/core.h> #include <fmt/core.h>
 +
 +int sqr(int number) { return number * number; }
  
 int main() int main()
 { {
-    fmt::print("2*2 = {}", 2*2);+    fmt::println("2*2 = {}", sqr(2));
 } }
 </code> </code>
Zeile 115: Zeile 108:
  
 <code - CMakeLists.txt> <code - CMakeLists.txt>
-cmake_minimum_required(VERSION 3.12)+cmake_minimum_required(VERSION 3.27)
 project(cmake_fmt VERSION 0.0.1 LANGUAGES CXX) project(cmake_fmt VERSION 0.0.1 LANGUAGES CXX)
  
 +find_package(doctest REQUIRED)
 find_package(fmt REQUIRED) find_package(fmt REQUIRED)
 +
 +add_executable(mytests main.test.cpp sqr.cpp)
 +target_compile_features(mytests PRIVATE cxx_std_23)
 +target_link_libraries(mytests PRIVATE doctest::doctest)
  
 add_executable(fmttest main.cpp) add_executable(fmttest main.cpp)
-target_compile_features(fmttest PRIVATE cxx_std_20)+target_compile_features(fmttest PRIVATE cxx_std_23)
 target_link_libraries(fmttest PRIVATE fmt::fmt) target_link_libraries(fmttest PRIVATE fmt::fmt)
 </code> </code>
  
 +Anmerkung: In C++23 kann die Funktion ''std:println()'' genutzt werden, ist in g++13.2 jedoch noch nicht implementiert.
lernen/conan.1653228265.txt.gz · Zuletzt geändert: 2022-05-22 16:04 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki