Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring cmake #435

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open

Conversation

Ygrik2003
Copy link
Contributor

Добавил пресет для линукса и подрефакторил весь симейк

@MihailRis
Copy link
Owner

Пожалуй, пока отключу уведомления на почту
а так, удачи
EwSdHf

@Ygrik2003
Copy link
Contributor Author

Такова цена сборки под эппл

@Ygrik2003
Copy link
Contributor Author

Прокинул \W4 на весь проект, количество варнингов убило

@Ygrik2003
Copy link
Contributor Author

Предлагаю переключить винду на статическую сборку всегда, просто оставив msvc и clang сборки, ибо писать костыли с километровыми комментами так себе

# Need for static compilation on Windows with MSVC clang TODO: Make single build
# on Windows to avoid dependence on combinations of platforms and compilers and
# make it independent
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
    # We use two types linking: for clang build is static (vcpkg triplet
    # x64-windows-static) and for msvc build is dynamic linking (vcpkg triplet
    # x64-windows) By default CMAKE_MSVC_RUNTIME_LIBRARY set by
    # MultiThreaded$<$<CONFIG:Debug>:Debug>DLL
    if(VCPKG_TARGET_TRIPLET MATCHES "static")
        # Need for MSVC clang
        set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
    endif()
endif()
target_link_options(
    VoxelEngineSrc
    PUBLIC
    $<$<CXX_COMPILER_ID:GNU>:
    -no-pie
    -lstdc++fs
    >
    # Need for static compilation on Windows with clang TODO: Make single build
    # on Windows to avoid dependence on combinations of platforms and compilers
    # and make it independent
    $<$<PLATFORM_ID:Windows>:$<$<CXX_COMPILER_ID:Clang>:-static>>)

Что касательно варнингов -- то некоторые, не критичные, можно замутить, либо переключить хотя бы на \W3, ибо ну слишком много там спамит, для сравнения размеры архива с логами до и после)

{85518F32-0F25-4F52-9C4C-3B635366A109}

@Ygrik2003
Copy link
Contributor Author

глубокий вдох
c++: error: no such file or directory: 'D:aVoxelEngine-CppVoxelEngine-Cpp/vcpkg/packages/luajit_x64-mingw-static/lib/libluajit-5.1.a'

@Ygrik2003
Copy link
Contributor Author

я победил

@Ygrik2003
Copy link
Contributor Author

Собственно, что еще нужно сделать:

  1. Отдельным ПРом нужно будет еще пошатать workflow, сделать их полностью через пресеты
  2. Нужно замьютить варнинги и/или понизить уровень варнингов, скорее всего в пределах этого ПРа
  3. Windows Clang сборку попробовать перенести на линукс с кроскомпиляцией под винду, проверить перфу. Нужно это для того, что бы можно было это красиво запихнуть в пресеты, ибо с переплетением MSYS и винды я понятия не имею, как это красиво сделать
  4. Глянул сборку MacOS, своего мака на руках нету, тестить на агенте по памяти будет муторно, но в общих чертах, если генерить XCode генератором, то в результате получим MyApp.app, которая, на сколько помню, легко конвертится в dmg и не нужно будет вручную че то мутить. Но Ninja генерация на маке тоже имеет место быть, тк для нее не нужны всякие сертификаты и прочие, в отличии от XCode генератора
  5. Как и говорил ранее, использовать 2 разных рантайма (статик и динамик) для винды это слишком, и если такая привязка к статической сборке под clang, то основную сборку тоже можно перенести на статическую. Конечно, увеличится время линковки, но лучше так, чем с костылями в коде.
  6. Пока что сильно не разбирался с dev/cmake/BuildAppdir.cmake, но думаю, это можно красиво сделать через CPack
  7. Добавить чутка больше CMakeLists для исходников, которые можно вынести в отдельные либы. Например, src/logic/scripting можно было бы собирать в отдельную объектную либу, таким образом поддерживая модульность

Эх, а это ведь всего 4 файлика cmake и относительно простой проект...

@Ygrik2003
Copy link
Contributor Author

Ygrik2003 commented Jan 10, 2025

Предлагаю замьютить следующие варнинги и потом потихоньку их фиксать, @MihailRis что скажешь?
/wd4244 # conversion from 'a' to 'T', possible loss of data
/wd4267 # conversion from 'size_t' to 'int', possible loss of data
/wd4245 # conversion from 'int' to 'const size_t', signed/unsigned
# mismatch
/wd4100 # unreferenced formal parameter
/wd4458 # declaration of 'var' hides class member
/wd4101: # 'var': unreferenced local variable

@Ygrik2003
Copy link
Contributor Author

До
{8C1A4F79-907B-4427-AF19-E0637333E611}
После
{A01FAAB7-E84C-4032-AA31-EB6AF4C4F821}

@Ygrik2003 Ygrik2003 marked this pull request as ready for review January 10, 2025 10:27
@Ygrik2003
Copy link
Contributor Author

Пингани, когда будешь готов к мержу, пофиксаю конфликты

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants