This library contains code that extends and simplifies different operations
for C++ language based programs
Rev. | Zeit | Autor | Nachricht |
---|---|---|---|
495b77e324b0 | 2023-02-26 06:36:37 | Sergey Gusarov | tip Fixed embedding of version info into dll |
c2fd1130d9aa | 2023-02-26 05:41:44 | Sergey Gusarov | Removed redundant namespace for template |
3acb2de6cde5 | 2023-02-26 05:38:50 | Sergey Gusarov | Copy file_property.rc.template before generating of .rc file |
c56dfd3d9daa | 2023-02-26 05:17:38 | Sergey Gusarov | Use ctools template for file_property.rc |
5ef95c99ad7b | 2022-10-05 10:23:29 | Sergey Gusarov | Added ctools/test_attributes |
0e62181a2460 | 2022-09-12 10:32:40 | Sergey Gusarov | use PUBLIC for target_compile_definitions(). The previous... |
98e04ac168f3 | 2022-09-12 10:15:34 | Sergey Gusarov | hg362 introduced target_compile_definitions() which depen... |
535c6f9c013c | 2022-08-31 22:02:59 | Sergey Gusarov | Added tests for libctool code what uses "#ifdef __cplusplus" |
7ca16417a495 | 2022-08-31 21:12:40 | Sergey Gusarov | Added support for searching and building of lictools-rela... |
a6d54a942365 | 2022-08-31 20:28:21 | Sergey Gusarov | tests/CMakeLists.txt: Removed redundant slash from path v... |
Name | Rev. | Zeit | Autor |
---|---|---|---|
tip | 495b77e324b0 | 2023-02-26 06:36:37 | Sergey Gusarov |
Name | Rev. | Zeit | Autor | Nachricht |
---|---|---|---|---|
default | 495b77e324b0 | 2023-02-26 06:36:37 | Sergey Gusarov | Fixed embedding of version ... |
exception_ptr | c2f9fc911bf0 | 2015-07-20 02:01:01 | s.gusarov | Saved exception_ptr wrapper... |
Библиотека для упрощения и расширения различных операций в программах на языке C++. Для выполнения низкоуровневых операций полагается полностью на libctools.
Макросы и определения экспортируемые библиотекой имеют префикс CPT. Все переменные, константы и функции располагаются в пространстве имён cpptools.
Планируется:
libctools находится в интерфейсе этой библиотеки. Тем самым формируется иерархия утилит со сходным назначением, но выполненных на разных языках и в разной парадигме. Тем не менее, активное использование libctools не рекомендуется из-за нарушения парадигмы C++. Ситуация полностью аналогична присутствию заголовочных файлов libc в исходном коде на C++. Они не запрещены, а просто не рекомендуются. И многие программисты их используют от случая к случаю. Предлагается часть таких обращений к libc заменить на обращения к libctools.
Из libctools рекомендуется использовать:
Препроцессор и всё что с ним связано (там где возникает в этом потребность). И все изменения связанные с препроцессором вносить в ту библиотеку, тем самым оставляя эту библиотеку максимально свободной от препроцессорных определений;
Код связанный с обработкой различных системных ситуаций и обращению к операционной системе. Например:
Современные операционные системы имеют, как правило, С-интерфейс. Поэтому без использования парадигм C на уровне сопряжения с кодом C++ не обойтись. Применение libctools в таких случаях позволяет реализовать повторное использование кода;
Механизмы и возможности временно отсутствующие в C++ коде (например, из-за недостатка времени на разработку), как fallback (запасное решение). Например, речь можно вести о развитой системе логирования и трассировки отладочных сообщений.
Как и libctools, эту библиотеку нужно инициализировать и финализировать (здесь обязательно). Для этого используются функции из cpptools.hpp .
Любые, на которых работают компиляторы C++11 и выше. В настоящее время (конец 2014) нет идеального компилятора, который умеет C++11 на 100%. И такая ситуация, по видимому, сохранится ещё на несколько лет. Плюс иногда нужно работать не с самыми свежими платформами. Поэтому для целей практики решено ввести ограничения на минимально-поддерживаемые версии компиляторов:
Большая часть замечаний из аналогичной секции libctools применима и здесь.
См. аналогичную секцию libctools.
Как и для libctools, существует 4 варианта использования библиотеки.
Дополнительно следует отметитить, что для бессборочного метода нужно указать пути для поиска заголовочных файлов include, build_info/include, libctools/include, libctools/build_info/include и линковать все модули из src, libctools/src и подкаталогов src и libctools/src (если таковые нужны).
Если при сборке определён идентификатор CPT_BOOST_SUPPORT, то библиотека будет поддерживать работу с boost. Поддержка boost в настоящее время находится в зачаточном состоянии. Библиотеку boost должен предоставлять внешний проект, который использует libcpptools.
Смотри подкаталог tests.
Сборка тестов с MS VC++2010