CMakeLists.txt 3.33 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
#   Universite catholique de Louvain
#   CEREM : Centre for research in mechatronics
#   http://www.robotran.be  
#   Contact : info@robotran.be
#
#
# CMake for compiling the symbolic files of a robotran project in C
# 

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#                       LIBRARY MAIN CONFIGURATIONS
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

if (UNIX)
16
    cmake_minimum_required(VERSION 3.4)
17
18
19
20
else()
    cmake_minimum_required(VERSION 3.4)
endif ()

21
22
23
24
25
if(NOT DEFINED SYMBOLIC_LIB_NAME)
    set (SYMBOLIC_LIB_NAME "Project_symbolic")
endif ( )

project(${SYMBOLIC_LIB_NAME})
26
27
28
29
30
31
32
33
34
35
36
37

# flags
if (UNIX)
    set(CMAKE_C_FLAGS "-fPIC")
    set(CMAKE_EXE_LINKER_FLAGS "-fPIC")
endif (UNIX)

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#                        SEPARATE COMPILATION
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

if ( FLAG_SEPARATE_SYMBOLIC )
38
39
    set(CMAKE_AUX ${ROBOTRAN_SOURCE_DIR}/cmake_aux)
    set(CMAKE_AUX_BIN ${PROJECT_BINARY_DIR}/cmake_aux)
40

41
42
    add_subdirectory ( ${CMAKE_AUX}/flags/   ${CMAKE_AUX_BIN}/flags/   )
    add_subdirectory ( ${CMAKE_AUX}/listing/ ${CMAKE_AUX_BIN}/listing/ )
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
endif ( )

# release of debug
release_debug()

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#                         SET LIBRARY
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

# list source files to compile
init_src()
increment_src( ${PROJECT_SOURCE_DIR} )
increment_void_symbolic( ${PROJECT_SOURCE_DIR} )

# list include directories (to find headers)
init_include()
increment_include( ${ROBOTRAN_SOURCE_DIR}/mbs_common )

# include these directories
include_directories ( ${INCLUDE_DIR} )
include_directories ( ${CMAKE_CURRENT_BINARY_DIR} )

if( FLAG_SHARED_LIB OR FLAG_SEPARATE_SYMBOLIC )

    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
68
    add_library(${SYMBOLIC_LIB_NAME} SHARED ${SOURCE_FILES})
69
70
71
    
    # MacOS: Force extension to be .so rather than .dylib
    if(APPLE)
72
        set_target_properties(${SYMBOLIC_LIB_NAME} PROPERTIES SUFFIX .so)    
73
74
75
76
    endif()    

    # Windows, copy dll next to executable
    if((NOT UNIX) AND (NOT FLAG_SEPARATE_SYMBOLIC))
77
        add_custom_command(TARGET ${SYMBOLIC_LIB_NAME} POST_BUILD
78
            COMMAND ${CMAKE_COMMAND} -E copy
79
80
                        ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${SYMBOLIC_LIB_NAME}.dll
                        ${CMAKE_CURRENT_BINARY_DIR}/../$<CONFIGURATION>/${SYMBOLIC_LIB_NAME}.dll
81
82
83
84
        )
    endif()

else()
85
    add_library(${SYMBOLIC_LIB_NAME} STATIC ${SOURCE_FILES})
86
87

    # some symbolic routines call user functions (ext_forces, accelred, ...)
88
    target_link_libraries(${SYMBOLIC_LIB_NAME} Project_userfct)
89
90
91
92
93
94
95
96
97
endif()


# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#                         LINK LIBRARIES
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

# MBSysC libraries
if ( FLAG_SEPARATE_BUILD ) # find MBSysC dynamic libraries
98
    find_package( LibRobotranC 1.15.1 REQUIRED )
99
    add_definitions(${LIB_MBSYSC_DEFINITIONS})
100
    target_link_libraries(${SYMBOLIC_LIB_NAME} ${LIB_MBSYSC_MODULES})
101
102
103
104
105
106
endif()

# Windows M_PI definitions
if (WIN32)
    add_definitions(-D _USE_MATH_DEFINES)
endif (WIN32)