-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
111 lines (98 loc) · 3.61 KB
/
CMakeLists.txt
File metadata and controls
111 lines (98 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
cmake_minimum_required(VERSION 3.6)
project(stac)
# Especificación de C++ estándar
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) # Para evitar extensiones específicas del compilador
#set(CMAKE_CXX_COMPILER "clang++") # Alt "g++" GCC
#set(CMAKE_CXX_COMPILER_ID "Clang")
# Verificación y configuración del compilador
find_program(CLANGPP_EXECUTABLE clang++)
if(CLANGPP_EXECUTABLE)
set(CMAKE_CXX_COMPILER "${CLANGPP_EXECUTABLE}")
endif()
# Configuración de compilación (Debug/Release)
#set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build: Debug or Release")
set(CMAKE_BUILD_TYPE Debug)
# Configuración específica del compilador
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
message(STATUS "Configurando para compilador Clang")
add_compile_options(
"$<$<CONFIG:Debug>:-Wpedantic;-Wall;-Wextra;-Wconversion;-Wshadow;-Wcast-qual;-Wwrite-strings;-g3;-O0;-ggdb3;-DDEBUG>"
"$<$<CONFIG:Release>:-Wpedantic;-Wall;-O3>"
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
message(STATUS "Configurando para compilador GCC")
add_compile_options(
"$<$<CONFIG:Debug>:-Wpedantic;-Wall;-Wextra;-Wconversion;-Wshadow;-Wcast-qual;-Wwrite-strings;-O0;-ggdb3;-DDEBUG>"
"$<$<CONFIG:Release>:-Wpedantic;-Wall;-O3>"
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
message(STATUS "Configurando para compilador Microsoft Visual C++")
add_compile_options(
"$<$<CONFIG:Debug>:/MDd;/RTC1;/permissive;/W3;/Wall;/DDEBUG;/Od;/Ob0;/Zi;/utf-8;/MP;/wd4820;/wd5045;/wd4668>"
"$<$<CONFIG:Release>:/O2;/W3>"
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(STATUS "Configurando para Intel Compiler")
if (MSVC)
message(STATUS "Intel Compiler en modo MSVC")
else()
message(STATUS "Intel Compiler en modo GCC/Clang")
endif()
add_compile_options(
"$<$<CONFIG:Debug>:-Wpedantic;-Wall;-Wextra;-Wconversion;-Wshadow;-Wcast-qual;-Wwrite-strings;-DDEBUG;-g;-O0>"
"$<$<CONFIG:Release>:-Wpedantic;-Wall;-O3>"
)
else()
message(WARNING "Compilador no soportado (${CMAKE_CXX_COMPILER_ID}). No se aplican banderas específicas.")
endif()
# Verificar compilador activo
message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
message(STATUS "CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
message(STATUS "CMAKE_CXX_COMPILER_VERSION: ${CMAKE_CXX_COMPILER_VERSION}")
set(lista_archivos
src/main.cpp
src/cli.cpp
src/entrada.cpp
src/salida.cpp
src/textosMenus.cpp
src/vector.cpp
src/row.cpp
src/matriz.cpp
src/funcMatematicasBasicas.cpp
src/calculos1Var.cpp
src/calculos2Var.cpp
src/calculosNVar.cpp
src/calculosAlgebra.cpp
src/combinatoria.cpp
src/distribucionesDiscretas.cpp
src/menuNVar.cpp
src/menuInferencia.cpp
src/menuSinDatos.cpp
src/menuCombinatoria.cpp
src/menuDistribDiscretas.cpp
src/menuSimula.cpp
src/generadoresCongruenciales.cpp
src/menuColExpo.cpp
src/modeloColas.cpp
src/mmi.cpp
src/mmik.cpp
src/mmc.cpp
src/mmInfinit.cpp
src/mgi.cpp
)
# Configuración del ejecutable
add_executable(stac ${lista_archivos})
# Configuración de los encabezados
target_include_directories(stac PRIVATE ${PROJECT_SOURCE_DIR}/include)
# Directorio de salida
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# Instalación
install(TARGETS stac RUNTIME DESTINATION bin)
# Pruebas automáticas para verificar la configuración
enable_testing()
add_test(
NAME CompiladorCorrecto
COMMAND ${CMAKE_COMMAND} -E echo "Compilador: ${CMAKE_CXX_COMPILER_ID}, Versión: ${CMAKE_CXX_COMPILER_VERSION}"
)