171 lines
5.4 KiB
CMake
171 lines
5.4 KiB
CMake
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
|
|
PROJECT( OpenDDL-Parser )
|
|
SET ( OPENDDL_PARSER_VERSION_MAJOR 0 )
|
|
SET ( OPENDDL_PARSER_VERSION_MINOR 1 )
|
|
SET ( OPENDDL_PARSER_VERSION_PATCH 0 )
|
|
SET ( OPENDDL_PARSER_VERSION ${OPENDDL_PARSER_VERSION_MAJOR}.${OPENDDL_PARSER_VERSION_MINOR}.${OPENDDL_PARSER_VERSION_PATCH} )
|
|
SET ( PROJECT_VERSION "${OPENDDL_PARSER_VERSION}" )
|
|
|
|
option( DDL_USE_CPP11 "Set to ON to use C++11 features ( always on on windows )." ON )
|
|
option( DDL_DEBUG_OUTPUT "Set to ON to use output debug texts" OFF )
|
|
option( DDL_STATIC_LIBRARY "Set to ON to build static libary of OpenDDL Parser." ON )
|
|
option( COVERALLS "Generate coveralls data" OFF )
|
|
|
|
if ( DDL_USE_CPP11 )
|
|
if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
|
|
set( OPENDDL_CXXFLAGS -std=c++0x )
|
|
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
|
set( OPENDDL_CXXFLAGS --std=c++11 )
|
|
endif()
|
|
else( DDL_USE_CPP11 )
|
|
add_definitions( -DOPENDDL_NO_USE_CPP11 )
|
|
endif( DDL_USE_CPP11)
|
|
|
|
if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
|
|
find_package(Threads)
|
|
else()
|
|
add_definitions( -D_CRT_SECURE_NO_WARNINGS )
|
|
endif()
|
|
|
|
if ( DDL_STATIC_LIBRARY )
|
|
add_definitions( -DOPENDDL_STATIC_LIBARY )
|
|
endif()
|
|
|
|
add_definitions( -DOPENDDLPARSER_BUILD )
|
|
add_definitions( -D_VARIADIC_MAX=10 )
|
|
add_definitions( -DGTEST_HAS_PTHREAD=0 )
|
|
if ( DDL_DEBUG_OUTPUT )
|
|
add_definitions( -DDDL_DEBUG_HEADER_NAME)
|
|
endif()
|
|
|
|
INCLUDE_DIRECTORIES(
|
|
./
|
|
include/
|
|
contrib/gtest-1.7.0/include
|
|
contrib/gtest-1.7.0/
|
|
)
|
|
|
|
link_directories(
|
|
${CMAKE_HOME_DIRECTORY}/lib
|
|
)
|
|
|
|
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake )
|
|
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
|
|
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
|
|
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/bin )
|
|
|
|
if( WIN32 AND NOT CYGWIN )
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc" ) # Force to always compile with W4
|
|
if( CMAKE_CXX_FLAGS MATCHES "/W[0-4]" )
|
|
string( REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" )
|
|
else()
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4" )
|
|
endif()
|
|
elseif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
|
|
# Update if necessary
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS}")
|
|
elseif ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS} -Wwrite-strings")
|
|
endif()
|
|
|
|
if (COVERALLS)
|
|
include(Coveralls)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
|
endif()
|
|
|
|
# Include the doc component.
|
|
FIND_PACKAGE( doxygen )
|
|
IF ( DOXYGEN_FOUND )
|
|
CONFIGURE_FILE( doc/openddlparser_doc.in doc/doxygenfile @ONLY )
|
|
ADD_CUSTOM_TARGET( doc ALL ${DOXYGEN_EXECUTABLE} doc/doxygenfile
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Generating API documentation with Doxygen" VERBATIM )
|
|
ENDIF ( DOXYGEN_FOUND )
|
|
|
|
SET ( openddl_parser_src
|
|
code/OpenDDLCommon.cpp
|
|
code/OpenDDLExport.cpp
|
|
code/OpenDDLParser.cpp
|
|
code/OpenDDLStream.cpp
|
|
code/DDLNode.cpp
|
|
code/Value.cpp
|
|
include/openddlparser/OpenDDLCommon.h
|
|
include/openddlparser/OpenDDLExport.h
|
|
include/openddlparser/OpenDDLParser.h
|
|
include/openddlparser/OpenDDLParserUtils.h
|
|
include/openddlparser/OpenDDLStream.h
|
|
include/openddlparser/DDLNode.h
|
|
include/openddlparser/Value.h
|
|
README.md
|
|
)
|
|
|
|
SOURCE_GROUP( code FILES ${openddl_parser_src} )
|
|
|
|
if ( DDL_STATIC_LIBRARY )
|
|
ADD_LIBRARY( openddl_parser STATIC
|
|
${openddl_parser_src}
|
|
)
|
|
else()
|
|
ADD_LIBRARY( openddl_parser SHARED
|
|
${openddl_parser_src}
|
|
)
|
|
endif()
|
|
|
|
SET ( GTEST_PATH contrib/gtest-1.7.0 )
|
|
|
|
SET ( gtest_src
|
|
${GTEST_PATH}/src/gtest-death-test.cc
|
|
${GTEST_PATH}/src/gtest-filepath.cc
|
|
${GTEST_PATH}/src/gtest-internal-inl.h
|
|
${GTEST_PATH}/src/gtest-port.cc
|
|
${GTEST_PATH}/src/gtest-printers.cc
|
|
${GTEST_PATH}/src/gtest-test-part.cc
|
|
${GTEST_PATH}/src/gtest-typed-test.cc
|
|
${GTEST_PATH}/src/gtest.cc
|
|
${GTEST_PATH}/src/gtest_main.cc
|
|
)
|
|
|
|
SET( openddl_parser_unittest_src
|
|
test/UnitTestCommon.h
|
|
test/DDLNodeTest.cpp
|
|
test/OpenDDLCommonTest.cpp
|
|
test/OpenDDLExportTest.cpp
|
|
test/OpenDDLParserTest.cpp
|
|
test/OpenDDLParserUtilsTest.cpp
|
|
test/OpenDDLStreamTest.cpp
|
|
test/OpenDDLIntegrationTest.cpp
|
|
test/ValueTest.cpp
|
|
test/OpenDDLDefectsTest.cpp
|
|
)
|
|
|
|
SOURCE_GROUP( code FILES ${openddl_parser_unittest_src} )
|
|
SOURCE_GROUP( gtest FILES ${gtest_src} )
|
|
|
|
ADD_EXECUTABLE( openddl_parser_unittest
|
|
${gtest_src}
|
|
${openddl_parser_unittest_src}
|
|
)
|
|
|
|
target_link_libraries( openddl_parser_unittest openddl_parser ${CMAKE_THREAD_LIBS_INIT} )
|
|
|
|
SET( openddl_parser_demo_src
|
|
demo/main.cpp
|
|
)
|
|
|
|
if (COVERALLS)
|
|
set(COVERAGE_SRCS ${gtest_src} ${openddl_parser_unittest_src} )
|
|
|
|
# Create the coveralls target.
|
|
coveralls_setup(
|
|
"${COVERAGE_SRCS}" # The source files.
|
|
ON # If we should upload.
|
|
"${PROJECT_SOURCE_DIR}/cmake/") # (Optional) Alternate project cmake module path.
|
|
endif()
|
|
|
|
ADD_EXECUTABLE( openddl_parser_demo
|
|
${openddl_parser_demo_src}
|
|
)
|
|
|
|
target_link_libraries( openddl_parser_demo openddl_parser )
|