comparison CMakeLists.txt @ 229:aac81791596b

Improve CMake script.
author SokoL_SD
date Fri, 17 Jul 2009 13:12:36 +0000
parents e1e8a95dc401
children b796329e8c38
comparison
equal deleted inserted replaced
228:e1e8a95dc401 229:aac81791596b
74 set(GEN_OPT ${GEN_OPT} --cpp_shared) 74 set(GEN_OPT ${GEN_OPT} --cpp_shared)
75 add_definitions(-DCPP_SHARED) 75 add_definitions(-DCPP_SHARED)
76 endif(D_IS_MARS) 76 endif(D_IS_MARS)
77 string(REGEX REPLACE ".dll([A-Za-z\\.0-9]+)" "\\1" CMAKE_IMPORT_LIBRARY_SUFFIX "${CMAKE_IMPORT_LIBRARY_SUFFIX}") 77 string(REGEX REPLACE ".dll([A-Za-z\\.0-9]+)" "\\1" CMAKE_IMPORT_LIBRARY_SUFFIX "${CMAKE_IMPORT_LIBRARY_SUFFIX}")
78 endif(CMAKE_HOST_WIN32) 78 endif(CMAKE_HOST_WIN32)
79
80 if(CMAKE_HOST_WIN32 AND D_IS_MARS)
81 set(CPP_SHARED 1)
82 endif(CMAKE_HOST_WIN32 AND D_IS_MARS)
79 83
80 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ./) 84 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ./)
81 set(GEN_OPT ${GEN_OPT} --d-target=${D_TARGET}) 85 set(GEN_OPT ${GEN_OPT} --d-target=${D_TARGET})
82 86
83 ## Bootstrap settings for QtD. 87 ## Bootstrap settings for QtD.
310 install(FILES ${path}/${name}_enum.d DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}_enum.di OPTIONAL) 314 install(FILES ${path}/${name}_enum.d DESTINATION include/d/${ins_path} COMPONENT qtd RENAME ${name}_enum.di OPTIONAL)
311 endforeach(d_source ${d_sources}) 315 endforeach(d_source ${d_sources})
312 endif(NOT GENERATE_DI_FILES) 316 endif(NOT GENERATE_DI_FILES)
313 317
314 ## Link CPP library. 318 ## Link CPP library.
315 add_library(cpp_${package} STATIC ${cpp_sources}) 319 if(CPP_SHARED)
320 set(cpp_method SHARED)
321 else(CPP_SHARED)
322 set(cpp_method STATIC)
323 endif(CPP_SHARED)
324 add_library(cpp_${package} ${cpp_method} ${cpp_sources})
316 set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) 325 set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles)
317 if(CMAKE_HOST_WIN32 AND D_IS_MARS) ## TODO: Replace by SEPAREATE_CPP_PART 326 if(CPP_SHARED)
318 else(CMAKE_HOST_WIN32 AND D_IS_MARS) 327 else(CPP_SHARED)
319 foreach(cpp_source ${cpp_sources}) 328 foreach(cpp_source ${cpp_sources})
320 set(cpp_source ${cpp_source}) 329 set(cpp_source ${cpp_source})
321 obj_path(cpp_source) 330 obj_path(cpp_source)
322 set(cpp_objs ${cpp_objs} ${CMAKE_BINARY_DIR}/CMakeFiles/cpp_${package}.dir/${cpp_source}${CMAKE_CXX_OUTPUT_EXTENSION}) 331 set(cpp_objs ${cpp_objs} ${CMAKE_BINARY_DIR}/CMakeFiles/cpp_${package}.dir/${cpp_source}${CMAKE_CXX_OUTPUT_EXTENSION})
323 endforeach(cpp_source ${cpp_sources}) 332 endforeach(cpp_source ${cpp_sources})
324 endif(CMAKE_HOST_WIN32 AND D_IS_MARS) 333 endif(CPP_SHARED)
325 334
326 ## Link D library. 335 ## Link D library.
327 set(lib_name qtd${package}) 336 set(lib_name qtd${package})
328 if(BUILD_SHARED_LIBRARIES) 337 if(BUILD_SHARED_LIBRARIES)
329 set(lib lib/${CMAKE_SHARED_LIBRARY_PREFIX}${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}) 338 set(lib lib/${CMAKE_SHARED_LIBRARY_PREFIX}${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX})
353 set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib) 362 set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib)
354 set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) 363 set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles)
355 string(TOUPPER ${package} package_upper) 364 string(TOUPPER ${package} package_upper)
356 set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY}) 365 set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY})
357 target_link_libraries(cpp_${package} ${link_cpp} ) 366 target_link_libraries(cpp_${package} ${link_cpp} )
358 if(CMAKE_HOST_WIN32 AND D_IS_MARS) ## TODO: Replace by SEPAREATE_CPP_PART 367 if(CPP_SHARED)
359 set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll) 368 set(cpp_lib ${CMAKE_BINARY_DIR}/lib/libcpp_${package}.dll)
360 set(cpp_lib_native ${cpp_lib}) 369 set(cpp_lib_native ${cpp_lib})
361 make_native_path(cpp_lib_native) 370 make_native_path(cpp_lib_native)
362 set(d_implib ${CMAKE_BINARY_DIR}/CMakeFiles/${package}.dir/cpp_${package}.lib) 371 set(d_implib ${CMAKE_BINARY_DIR}/CMakeFiles/${package}.dir/cpp_${package}.lib)
363 set(d_implib_native ${d_implib}) 372 set(d_implib_native ${d_implib})
368 ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native} 377 ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native}
369 DEPENDS "cpp_${package}" 378 DEPENDS "cpp_${package}"
370 COMMENT "Creating implib ${lib_name}" 379 COMMENT "Creating implib ${lib_name}"
371 ) 380 )
372 install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib) 381 install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib)
373 else(CMAKE_HOST_WIN32 AND D_IS_MARS) 382 else(CPP_SHARED)
374 set(${package}_lib_param Qt${package_big}) ## Paths for QtD libs. Needed by examples. 383 set(${package}_lib_param Qt${package_big}) ## Paths for QtD libs. Needed by examples.
375 endif(CMAKE_HOST_WIN32 AND D_IS_MARS) 384 endif(CPP_SHARED)
376 add_d_target(${lib_name} NOT_DETECT_DEPENDS TYPE ${build_type} INCLUDES ${QTD_IMPORT_PATH} SOURCES ${d_sources} OBJECTS ${cpp_objs} ${d_implib} 385 add_d_target(${lib_name} NOT_DETECT_DEPENDS TYPE ${build_type} INCLUDES ${QTD_IMPORT_PATH} SOURCES ${d_sources} OBJECTS ${cpp_objs} ${d_implib}
377 OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib DEPENDS ${d_implib}) 386 OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib DEPENDS ${d_implib})
378 install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib) 387 install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib)
379 388
380 ## Paths for QtD libs. Needed by examples. 389 ## Paths for QtD libs. Needed by examples.