mirror of
https://github.com/jorenchik/mdemory.git
synced 2026-03-21 16:16:19 +00:00
Linux un Windows build differences in CMakeLists and appropriate README
This commit is contained in:
@@ -5,10 +5,38 @@ set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||
|
||||
set(
|
||||
CMAKE_CXX_FLAGS_DEBUG
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -g3 -O0 -ggdb -fno-inline"
|
||||
CMAKE_EXPORT_COMPILE_COMMANDS
|
||||
ON CACHE BOOL "Enable generation of compile_commands.json by default"
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
set(
|
||||
WIN32_ADDITIONAL_OPTIONS "-static-libgcc -static-libstdc++ -static"
|
||||
CACHE STRING "Additional options for Windows builds"
|
||||
)
|
||||
endif()
|
||||
|
||||
set(
|
||||
DEFAULT_DEBUG_OPTIONS "-g3 -O0 -ggdb -fno-inline"
|
||||
CACHE STRING "Default debug options"
|
||||
)
|
||||
set(
|
||||
DEFAULT_RELEASE_OPTIONS "-O3 -DNDEBUG"
|
||||
CACHE STRING "Default release options"
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEFAULT_DEBUG_OPTIONS} ${WIN32_ADDITIONAL_OPTIONS}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${DEFAULT_RELEASE_OPTIONS} ${WIN32_ADDITIONAL_OPTIONS}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEFAULT_DEBUG_OPTIONS}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${DEFAULT_RELEASE_OPTIONS}")
|
||||
endif()
|
||||
|
||||
option(COMPILE_TESTS "Compile tests" ON)
|
||||
|
||||
add_subdirectory(src/transpiler)
|
||||
add_subdirectory(src/qtapp)
|
||||
add_subdirectory(src/test)
|
||||
if (COMPILE_TESTS)
|
||||
add_subdirectory(src/test)
|
||||
endif()
|
||||
|
||||
75
README.md
Normal file
75
README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Nepieciešamie rīki un bibliotēkas
|
||||
|
||||
## Linux
|
||||
|
||||
- `C++` kompilators (piemēram, `g++`)
|
||||
- Bibliotēka `Qt` (v5.15.0)
|
||||
- Bibliotēka `QScintilla` (v2.14)
|
||||
- Bibliotēka `GTest` (v1.15)
|
||||
- Rīks `CMake`
|
||||
- Rīks `Ninja`
|
||||
|
||||
## Windows
|
||||
|
||||
- `C++` kompilators ([`MinGw`](https://winlibs.com/))
|
||||
- Bibliotēka `Qt` (v5.15.0)
|
||||
- Bibliotēka `QScintilla` (v2.14)
|
||||
- Bibliotēka `GTest` (v1.15)
|
||||
- Rīks `CMake`
|
||||
- Rīks `Ninja`
|
||||
|
||||
# Uzbūvēšana
|
||||
|
||||
Linux un Windows sistēmām ir norādītas noklusētās bibliotēku atrašanās vietas.
|
||||
Lai uzbūvētu ar noklusētiem iestatījumiem.
|
||||
|
||||
```bash
|
||||
mkdir Debug/
|
||||
cd Debug/
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -G Ninja ..
|
||||
```
|
||||
|
||||
Lai nekompilētu testus pievieno `-DCOMPILE_TESTS=OFF`.
|
||||
|
||||
Ir pieejamas 2 cmake konfigurācijas - `Debug` (atkļūdošana) un `Release`
|
||||
(piegāde). Ja nepieciešams pielāgot vienu vai vairākus parametrus, skatīt
|
||||
nākamās 2 sadaļas.
|
||||
|
||||
## Linux
|
||||
|
||||
```bash
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DQt5_DIR="/usr/lib/cmake/Qt5" \
|
||||
-DQSCINTILLA_LIB_PATH="/usr/lib/libqscintilla2_qt5.so" \
|
||||
-DQSCINTILLA_INCLUDE_PATH="/usr/include/qt/Qsci" \
|
||||
-DGTEST_INCLUDE_DIR="/usr/include/gtest" \
|
||||
-DGTEST_LIBRARY="/usr/lib/libgtest.so" \
|
||||
-DGTEST_MAIN_LIBRARY="/usr/lib/libgtest_main.so" \
|
||||
-G Ninja ..
|
||||
```
|
||||
|
||||
## Windows
|
||||
|
||||
```bash
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug \
|
||||
-DQt5_DIR="C:/Qt/5.15.0/mingw81_64/lib/cmake/Qt5" \
|
||||
-DQSCINTILLA_LIB_PATH="C:/Programs/binaries/qscintilla2_qt5.dll" \
|
||||
-DQSCINTILLA_INCLUDE_PATH="C:/Programs/QScintilla_src-2.14.1/src" \
|
||||
-DGTEST_INCLUDE_DIR="C:/Programs/binaries/gtest_include" \
|
||||
-DGTEST_LIBRARY="C:/Programs/binaries/gtest_lib/libgtest.a" \
|
||||
-DGTEST_MAIN_LIBRARY="C:/Programs/binaries/gtest_lib/libgtest_main.a" \
|
||||
-G Ninja ..
|
||||
```
|
||||
|
||||
Lai ieliktu direktorijā nepieciešamās bibliotēkas.
|
||||
|
||||
```
|
||||
cd ./src/qtapp/
|
||||
windeployqt MdemoryApp.exe
|
||||
```
|
||||
|
||||
Darbam uz Windows direktorijā papildus jāieliek `qscintilla2_qt5.dll` un
|
||||
`Qt5PrintSupport.dll`.
|
||||
|
||||
Piegādes kompilēšanā var pielikt `-DWIN32_EXECUTABLE=ON`, lai slēdzot programmu
|
||||
nerādītos termināla logs.
|
||||
@@ -1,21 +1,31 @@
|
||||
# cmake_minimum_required(VERSION 3.10)
|
||||
# if(CMAKE_VERSION VERSION_LESS "3.7.0")
|
||||
# set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
# endif()
|
||||
|
||||
# set(CMAKE_CXX_STANDARD 20)
|
||||
# set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
find_package(Qt5 COMPONENTS Widgets REQUIRED)
|
||||
if (WIN32)
|
||||
set(DEFAULT_QT5_DIR "C:/Qt/5.15.0/mingw81_64/lib/cmake/Qt5")
|
||||
set(DEFAULT_QSCINTILLA_LIB_PATH "C:/Programs/binaries/qscintilla2_qt5.dll")
|
||||
set(DEFAULT_QSCINTILLA_INCLUDE_PATH "C:/Programs/QScintilla_src-2.14.1/src")
|
||||
else()
|
||||
set(DEFAULT_QT5_DIR "/usr/lib/cmake/Qt5")
|
||||
set(DEFAULT_QSCINTILLA_LIB_PATH "/usr/lib/libqscintilla2_qt5.so")
|
||||
set(DEFAULT_QSCINTILLA_INCLUDE_PATH "/usr/include/qt/Qsci")
|
||||
endif()
|
||||
|
||||
# find_package(QScintilla REQUIRED)
|
||||
include_directories(/usr/include/qt/Qsci)
|
||||
set(Qt5_DIR ${DEFAULT_QT5_DIR} CACHE PATH "Path to Qt5 CMake configuration")
|
||||
set(QSCINTILLA_LIB_PATH ${DEFAULT_QSCINTILLA_LIB_PATH} CACHE PATH "Path to QScintilla library")
|
||||
set(QSCINTILLA_INCLUDE_PATH ${DEFAULT_QSCINTILLA_INCLUDE_PATH} CACHE PATH "Path to QScintilla include files")
|
||||
|
||||
set(CMAKE_PREFIX_PATH ${Qt5_DIR} ${CMAKE_PREFIX_PATH})
|
||||
|
||||
include_directories(${QSCINTILLA_INCLUDE_PATH})
|
||||
|
||||
option(WIN32_EXECUTABLE "Set this option to remove terminal opening on Windows" OFF)
|
||||
if (WIN32 AND WIN32_EXECUTABLE)
|
||||
set_target_properties(MdemoryApp PROPERTIES WIN32_EXECUTABLE TRUE)
|
||||
endif()
|
||||
|
||||
find_package(Qt5 COMPONENTS Widgets Gui REQUIRED)
|
||||
qt5_add_resources(RESOURCES ${CMAKE_SOURCE_DIR}/resources/resources.qrc)
|
||||
|
||||
add_library(
|
||||
@@ -31,6 +41,6 @@ add_executable(
|
||||
${RESOURCES}
|
||||
)
|
||||
|
||||
target_link_libraries(gui Qt5::Widgets /usr/lib/libqscintilla2_qt5.so api)
|
||||
target_link_libraries(gui Qt5::Widgets Qt5::Gui ${QSCINTILLA_LIB_PATH} api)
|
||||
target_link_libraries(MdemoryApp gui)
|
||||
target_include_directories(MdemoryApp PRIVATE ${CMAKE_SOURCE_DIR}/src/include)
|
||||
|
||||
@@ -4,6 +4,20 @@ project(MdemoryTest)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
if (WIN32)
|
||||
set(DEFAULT_GTEST_INCLUDE_DIR "C:/Programs/binaries/gtest_include")
|
||||
set(DEFAULT_GTEST_LIBRARY "C:/Programs/binaries/gtest_lib/libgtest.a")
|
||||
set(DEFAULT_GTEST_MAIN_LIBRARY "C:/Programs/binaries/gtest_lib/libgtest_main.a")
|
||||
else()
|
||||
set(DEFAULT_GTEST_INCLUDE_DIR "/usr/include/gtest")
|
||||
set(DEFAULT_GTEST_LIBRARY "/usr/lib/libgtest.so")
|
||||
set(DEFAULT_GTEST_MAIN_LIBRARY "/usr/lib/libgtest_main.so")
|
||||
endif()
|
||||
|
||||
set(GTEST_INCLUDE_DIR ${DEFAULT_GTEST_INCLUDE_DIR} CACHE PATH "Path to GTest include directory")
|
||||
set(GTEST_LIBRARY ${DEFAULT_GTEST_LIBRARY} CACHE FILEPATH "Path to GTest library")
|
||||
set(GTEST_MAIN_LIBRARY ${DEFAULT_GTEST_MAIN_LIBRARY} CACHE FILEPATH "Path to GTest main library")
|
||||
|
||||
find_package(GTest REQUIRED)
|
||||
enable_testing()
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@ Result<NoneType> ValidateGrammar(const std::vector<Token>& tokens) {
|
||||
nextToken.tokenType
|
||||
) == (*transitions)[token.tokenType].end()) {
|
||||
|
||||
|
||||
auto capitalize = [](const std::string& str) {
|
||||
if (str.empty()) return str;
|
||||
std::string result = str;
|
||||
|
||||
Reference in New Issue
Block a user