# HG changeset patch # User SokoL_SD # Date 1247836356 0 # Node ID aac81791596bef14ecdb6f1765ce25e70c00cb79 # Parent e1e8a95dc4010cd649269f974ed905b5e1cadca4 Improve CMake script. diff -r e1e8a95dc401 -r aac81791596b CMakeLists.txt --- a/CMakeLists.txt Fri Jul 17 10:12:03 2009 +0000 +++ b/CMakeLists.txt Fri Jul 17 13:12:36 2009 +0000 @@ -77,6 +77,10 @@ string(REGEX REPLACE ".dll([A-Za-z\\.0-9]+)" "\\1" CMAKE_IMPORT_LIBRARY_SUFFIX "${CMAKE_IMPORT_LIBRARY_SUFFIX}") endif(CMAKE_HOST_WIN32) +if(CMAKE_HOST_WIN32 AND D_IS_MARS) + set(CPP_SHARED 1) +endif(CMAKE_HOST_WIN32 AND D_IS_MARS) + set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ./) set(GEN_OPT ${GEN_OPT} --d-target=${D_TARGET}) @@ -312,16 +316,21 @@ endif(NOT GENERATE_DI_FILES) ## Link CPP library. - add_library(cpp_${package} STATIC ${cpp_sources}) + if(CPP_SHARED) + set(cpp_method SHARED) + else(CPP_SHARED) + set(cpp_method STATIC) + endif(CPP_SHARED) + add_library(cpp_${package} ${cpp_method} ${cpp_sources}) set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) - if(CMAKE_HOST_WIN32 AND D_IS_MARS) ## TODO: Replace by SEPAREATE_CPP_PART - else(CMAKE_HOST_WIN32 AND D_IS_MARS) + if(CPP_SHARED) + else(CPP_SHARED) foreach(cpp_source ${cpp_sources}) set(cpp_source ${cpp_source}) obj_path(cpp_source) set(cpp_objs ${cpp_objs} ${CMAKE_BINARY_DIR}/CMakeFiles/cpp_${package}.dir/${cpp_source}${CMAKE_CXX_OUTPUT_EXTENSION}) endforeach(cpp_source ${cpp_sources}) - endif(CMAKE_HOST_WIN32 AND D_IS_MARS) + endif(CPP_SHARED) ## Link D library. set(lib_name qtd${package}) @@ -355,7 +364,7 @@ string(TOUPPER ${package} package_upper) set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY}) target_link_libraries(cpp_${package} ${link_cpp} ) - if(CMAKE_HOST_WIN32 AND D_IS_MARS) ## TODO: Replace by SEPAREATE_CPP_PART + if(CPP_SHARED) set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll) set(cpp_lib_native ${cpp_lib}) make_native_path(cpp_lib_native) @@ -370,9 +379,9 @@ COMMENT "Creating implib ${lib_name}" ) install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib) - else(CMAKE_HOST_WIN32 AND D_IS_MARS) + else(CPP_SHARED) set(${package}_lib_param Qt${package_big}) ## Paths for QtD libs. Needed by examples. - endif(CMAKE_HOST_WIN32 AND D_IS_MARS) + endif(CPP_SHARED) add_d_target(${lib_name} NOT_DETECT_DEPENDS TYPE ${build_type} INCLUDES ${QTD_IMPORT_PATH} SOURCES ${d_sources} OBJECTS ${cpp_objs} ${d_implib} OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib DEPENDS ${d_implib}) install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib)