Pull to refresh
0
0
Григорий @SGrek

Разработчик

Send message

А Бетельгейзе, как я понимаю, обещает быть черной дырой

Интересно, на каком минимальном расстоянии должны столкнуться нейтронные звезды, чтобы это стало катастрофой для жизни на Земле и есть ли такие потенциальные объекты?

Тоже же бы хотел услышать.

Со студенчества мечтаю "вайти в геймдев" и вот на старость лет решил все-таки взять лопату и копать в этом направлении :) Спасибо за дорожную карту, для меня еще более ценно, что разложено и по направлениям!
Я бы еще добавил обзор по тому же SYCL, хотя, возможно, в какой-нибудь перечисленной книге он присутствует.

Предполагаю, что она будет медленная только в том случае, если ptr все-таки не NULL.

Согласен, атмосфера в первой части полностью повлияла на отношение ко второй. Для меня вторая часть - это какая-то другая и менее интересная игра, проходил ее только из-за большой любви к первой.

Хотелось бы видеть подобные статьи с этой вашей геометрией побольше, очень интересно :)

Да, привычка в деле. Тоже стараюсь подбирать клавиатуры где большие - Enter, Shift и Backspace.

Еще подъехала парочка вопросов :)

  1. Best practice.
    Разрабатывается некий проект под несколько ОС. Какой генератор лучше использовать конкретно под Windows: Ninja или Visual Studio XXX (под Windows используется именно студийный компилятор)? Почему?
    Если использовать Visual Studio XXX, то что делать с генерируемыми *.sln и *.vcxproj, для чего они мне?

  2. How do it?
    Столкнулся со следующей проблемой: используется связка мой main() + SDL. Под Windows не хочу запускать консольное окно + "окошечное", хочу сразу "окошечное", поэтому гугл говорит использовать флаги "LINK_FLAGS = /ENTRY:mainCRTStartup /SUBSYSTEM:WINDOWS". И да, действительно, если я в CMakeLists.txt укажу "set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "/ENTRY:mainCRTStartup /SUBSYSTEM:WINDOWS")" - все работает (но странно, что Ninja генерирует: "LINK_FLAGS = /machine:x64 /debug /INCREMENTAL /subsystem:console /ENTRY:mainCRTStartup /SUBSYSTEM:WINDOWS", т.е. и консоль и окно вместе).
    Но, если флаги "LINK_FLAGS" вынести в пресет файл в секцию с настройками винды, т.е. освободить CMakeLists.txt от лишних зависимостей, то освободиться от запуска консоли не могу :( Как можно решить эту проблему, не засоряя CMakeLists.txt?

Использование определенного стандарта языка является тем необходимым, которое можно включать в CMakeLists?
Если готовить cmake файлы для исполняемых файлов, то я, полагаю, требования к содержимому CMakeLists.txt будут менее жесткие? Опции/флаги компиляции/линковки можно использовать в CMakeLists или все-таки надо выносить?

Созрел еще один вопрос вдогонку к public header файлам. Если следовать рекомендациям использования target_sources, то соблюсти структуру дерева исходников не проблема, а как быть с public header файлами? У меня достаточно много подпапок, но для них не создаются CMakeLists.txt, по крайней мере я не видел такой практики.

Изначально хотел использовать file(glob), но при очередном гуглении очередного вопроса, прочитал, что лучше использовать target_sources.

Понял, спасибо! add_subdirectory взял на вооружение, поменяю в своих проектах.

Еще один вопрос по лучшим практикам: у меня src директория содержит относительно много поддиректорий с исходниками и в каждой из них я определяю CMakeLists.txt со следующим содержимым:
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/subdir/CMakeLists.txt") <- там, где надо подключить след. папку
TARGET_SOURCES("${PROJECT_NAME}" PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/file01.cpp"
"${CMAKE_CURRENT_LIST_DIR}/file01.h"
...
)
А в "верхнем" CMakeLists.txt:
...
ADD_LIBRARY("${PROJECT_NAME}" SHARED "")
...
INCLUDE("${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt")

Вы для определения списка исходников используете переменную, которая в свою очередь используется, для задач, которые Вы описали. Как лучше всего включать исходники в таргет, когда и папок много, и файлов в них?

П.2 почитал внимательно, но не сразу разобрался, что именно find module решается моя задача. Спасибо!

Спасибо за разъяснение!
А если нет возможности воспользоваться find_package, т.е. обертываемая библиотека была предоставлена только заголовочными и бинарными файлами (нет ни файла конфигурации и в системе никаким образом не зарегистрирована). Какова правильная практика указать искомый путь к этим файлам? Сейчас я в пресете создаю переменную, которая хранит путь к папке обертываемой библиотеки, затем в CMakeLists через target_include_directories подключаю заголовки, target_link_directories папку с бинарными файлами и target_link_libraries имя библиотеки. Догадываюсь, что неправильно.

Здравствуйте! Так как только осваиваю CMake, хотел задать вопрос по своей текущей задаче.
Как можно модернизировать Ваш шаблон для библиотеки, которая в свою очередь является оберткой для другой библиотеки различных конфигураций (win/linux, x86/x64, static/shared, release/debug), которая имеет только заголовочные файлы и бинарные (dll/lib/so).
Хотелось бы раскрыть вопросы:

  • каким образом организовать сборку и под Linux, и под Windows, с учетом того, что атрибуты экспортируемых функций для Linux/Windows разный, т.е. можно ли это как-то автоматизировать (есть ли такой инструмент у CMake) или это надо делать вручную;

  • как правильно ссылаться (прописывать пути к include/libs) к оборачиваемой библиотеке;

  • что лучше определять в CMakePresets.json, а что в CMakeLists.txt;

  • установка разных конфигураций библиотеки.

Интересно, как скоро увидим на Али :)

Подскажите, в декабре у меня заканчивается второй (или третий?!) год подписки на "All Products Pack", действует ли данная акция на следующее продление? Сейчас продление предлагается за "US $124.50", но, насколько я помню, столько же стоило и в прошлом году.

1

Information

Rating
Does not participate
Location
Кокошкино, Москва и Московская обл., Россия
Date of birth
Registered
Activity