-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathCMakeLists.txt
64 lines (49 loc) · 2.15 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.0.0)
# Project settings
project(DiceForge VERSION 1.0
DESCRIPTION "A C++ library with the same functionality as the random library in python."
LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
# Project structure
if (WIN32)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out/windows)
elseif(APPLE)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out/macOS)
elseif(UNIX)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out/linux)
else()
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/out)
endif()
set(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)
set(CMAKE_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)
include_directories(${PROJECT_SOURCE_DIR}/src/Core)
# Files to be compiled
set(SRC
"src/Core/basicfxn.cpp"
"src/Generators/BBS/blumblumshub.cpp"
"src/Generators/LFSR/LFSR.cpp"
"src/Generators/MT/MT.cpp"
"src/Generators/Naor-Reingold/naor_reingold.cpp"
"src/Generators/XORShift/XORShift.cpp"
"src/Distributions/Discrete/Bernoulli/Bernoulli.cpp"
"src/Distributions/Discrete/Binomial/Binomial.cpp"
"src/Distributions/Discrete/Gibbs/Gibbs.cpp"
"src/Distributions/Discrete/Hypergeometric/Hypergeometric.cpp"
"src/Distributions/Discrete/Negative-Hypergeometric/NegHypergeometric.cpp"
"src/Distributions/Discrete/Poisson/Poisson.cpp"
"src/Distributions/Discrete/Geometric/Geometric.cpp"
"src/Distributions/Continuous/Cauchy/Cauchy.cpp"
"src/Distributions/Continuous/Exponential/Exponential.cpp"
"src/Distributions/Continuous/Gaussian/Gaussian.cpp"
"src/Distributions/Continuous/Maxwell/Maxwell.cpp"
"src/Distributions/Continuous/Weibull/Weibull.cpp"
"src/Distributions/Continuous/Custom/Custom.cpp")
# Compile to objects
add_library(objlib OBJECT ${SRC})
set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
# Build library
add_library(diceforge STATIC $<TARGET_OBJECTS:objlib>)
add_library(diceforge_s SHARED $<TARGET_OBJECTS:objlib>)
# Installing library
set_target_properties(diceforge PROPERTIES PUBLIC_HEADER "include/diceforge.h;include/diceforge_core.h;include/diceforge_distributions.h;include/diceforge_generators.h")
install(TARGETS diceforge LIBRARY DESTINATION "lib" PUBLIC_HEADER DESTINATION "include")