CMake conversion, further steps: Now it compiles on Visual Studio 2013.

This commit is contained in:
bubnikv 2017-08-17 18:27:51 +02:00
parent bb36e78428
commit c0f099c2cf
4 changed files with 45 additions and 15 deletions

View File

@ -17,8 +17,7 @@ option(SLIC3R_HAS_BROKEN_CROAK "Compile Slic3r for a broken Strawberry Perl 64b
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
if (MSVC AND SLIC3R_MSVC_COMPILE_PARALLEL) if (MSVC AND SLIC3R_MSVC_COMPILE_PARALLEL)
set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} /MP) add_compile_options(/MP)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} /MP)
endif () endif ()
add_subdirectory(xs) add_subdirectory(xs)

View File

@ -69,7 +69,7 @@ cmake_set_var('INCLUDE_DIRS', \$include_path);
\$libraries =~ s/ -L/ -LIBPATH:/g if \$msvc; \$libraries =~ s/ -L/ -LIBPATH:/g if \$msvc;
cmake_set_var('LIBRARIES', \$libraries); cmake_set_var('LIBRARIES', \$libraries);
#cmake_set_var('LIBRARY_DIRS', ); #cmake_set_var('LIBRARY_DIRS', );
\$defines =~ s/ -D/ /g; #\$defines =~ s/ -D/ /g;
cmake_set_var('DEFINITIONS', \$defines); cmake_set_var('DEFINITIONS', \$defines);
#cmake_set_var('DEFINITIONS_DEBUG', ); #cmake_set_var('DEFINITIONS_DEBUG', );
cmake_set_var('CXX_FLAGS', \$cflags); cmake_set_var('CXX_FLAGS', \$cflags);

View File

@ -46,6 +46,9 @@
# tbb_preview, or tbb_preview_debug. # tbb_preview, or tbb_preview_debug.
# * TBB_USE_DEBUG_BUILD - The debug version of tbb libraries, if present, will # * TBB_USE_DEBUG_BUILD - The debug version of tbb libraries, if present, will
# be used instead of the release version. # be used instead of the release version.
# * TBB_STATIC - Static linking of libraries with a _static suffix.
# For example, on Windows a tbb_static.lib will be searched for
# instead of tbb.lib.
# #
# Users may modify the behavior of this module with the following environment # Users may modify the behavior of this module with the following environment
# variables: # variables:
@ -204,17 +207,21 @@ if(NOT TBB_FOUND)
set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc_proxy tbbmalloc tbb) set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc_proxy tbbmalloc tbb)
endif() endif()
if(TBB_STATIC)
set(TBB_STATIC_SUFFIX "_static")
endif()
# Find each component # Find each component
foreach(_comp ${TBB_SEARCH_COMPOMPONENTS}) foreach(_comp ${TBB_SEARCH_COMPOMPONENTS})
if(";${TBB_FIND_COMPONENTS};tbb;" MATCHES ";${_comp};") if(";${TBB_FIND_COMPONENTS};tbb;" MATCHES ";${_comp};")
# Search for the libraries # Search for the libraries
find_library(TBB_${_comp}_LIBRARY_RELEASE ${_comp} find_library(TBB_${_comp}_LIBRARY_RELEASE ${_comp}${TBB_STATIC_SUFFIX}
HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX}) PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX})
find_library(TBB_${_comp}_LIBRARY_DEBUG ${_comp}_debug find_library(TBB_${_comp}_LIBRARY_DEBUG ${_comp}${TBB_STATIC_SUFFIX}_debug
HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR}
PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH
PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX}) PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX})
@ -243,6 +250,8 @@ if(NOT TBB_FOUND)
endif() endif()
endforeach() endforeach()
unset(TBB_STATIC_SUFFIX)
################################## ##################################
# Set compile flags and libraries # Set compile flags and libraries
################################## ##################################
@ -300,4 +309,14 @@ if(NOT TBB_FOUND)
unset(TBB_LIB_PATH_SUFFIX) unset(TBB_LIB_PATH_SUFFIX)
unset(TBB_DEFAULT_SEARCH_DIR) unset(TBB_DEFAULT_SEARCH_DIR)
if(TBB_DEBUG)
message(STATUS " TBB_INCLUDE_DIRS = ${TBB_INCLUDE_DIRS}")
message(STATUS " TBB_DEFINITIONS = ${TBB_DEFINITIONS}")
message(STATUS " TBB_LIBRARIES = ${TBB_LIBRARIES}")
message(STATUS " TBB_DEFINITIONS_DEBUG = ${TBB_DEFINITIONS_DEBUG}")
message(STATUS " TBB_LIBRARIES_DEBUG = ${TBB_LIBRARIES_DEBUG}")
message(STATUS " TBB_DEFINITIONS_RELEASE = ${TBB_DEFINITIONS_RELEASE}")
message(STATUS " TBB_LIBRARIES_RELEASE = ${TBB_LIBRARIES_RELEASE}")
endif()
endif() endif()

View File

@ -74,12 +74,13 @@ target_compile_definitions(XS PRIVATE -DSLIC3RXS)
set_target_properties(XS PROPERTIES PREFIX "") # Prevent cmake from generating libXS.so instead of XS.so set_target_properties(XS PROPERTIES PREFIX "") # Prevent cmake from generating libXS.so instead of XS.so
if (APPLE) if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE") # add_compile_options(-stdlib=libc++)
# add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE)
target_link_libraries(XS -framework IOKit -framework CoreFoundation -lc++) target_link_libraries(XS -framework IOKit -framework CoreFoundation -lc++)
elseif (MSVC) elseif (MSVC)
target_link_libraries(XS ) target_link_libraries(XS )
else () else ()
target_link_libraries(XS -lc++) target_link_libraries(XS -lstdc++)
endif () endif ()
# Windows specific stuff # Windows specific stuff
@ -113,7 +114,12 @@ find_package(PerlLibs REQUIRED)
set(PerlEmbed_DEBUG 1) set(PerlEmbed_DEBUG 1)
find_package(PerlEmbed REQUIRED) find_package(PerlEmbed REQUIRED)
target_include_directories(XS PRIVATE ${PERL_INCLUDE_PATH}) target_include_directories(XS PRIVATE ${PERL_INCLUDE_PATH})
target_compile_options(XS PRIVATE ${PerlEmbed_CCLAGS}) target_compile_options(XS PRIVATE ${PerlEmbed_CCFLAGS})
# If the Perl is compiled with optimization off, disable optimization over the whole project.
if ("-Od" IN_LIST PerlEmbed_CCFLAGS OR "/Od" IN_LIST PerlEmbed_CCFLAGS)
set(CMAKE_CXX_FLAGS_RELEASE /Od)
set(CMAKE_C_FLAGS_RELEASE /Od)
endif()
target_link_libraries(XS ${PERL_LIBRARY}) target_link_libraries(XS ${PERL_LIBRARY})
## REQUIRED packages ## REQUIRED packages
@ -136,12 +142,18 @@ if (Boost_FOUND)
endif () endif ()
# Find and configure intel-tbb # Find and configure intel-tbb
if(SLIC3R_STATIC)
set(TBB_STATIC 1)
endif()
set(TBB_DEBUG 1)
find_package(TBB REQUIRED) find_package(TBB REQUIRED)
if (TBB_FOUND)
include_directories(${TBB_INCLUDE_DIRS}) include_directories(${TBB_INCLUDE_DIRS})
add_definitions(${TBB_DEFINITIONS}) add_definitions(${TBB_DEFINITIONS})
target_link_libraries(XS ${TBB_LIBRARIES}) if(MSVC)
# Suppress implicit linking of the TBB libraries by the Visual Studio compiler.
add_definitions(-D__TBB_NO_IMPLICIT_LINKAGE)
endif() endif()
target_link_libraries(XS ${TBB_LIBRARIES})
# Find and configure wxWidgets # Find and configure wxWidgets
if (SLIC3R_PRUSACONTROL) if (SLIC3R_PRUSACONTROL)
@ -149,8 +161,8 @@ if (SLIC3R_PRUSACONTROL)
if (wxWidgets_UseAlienWx) if (wxWidgets_UseAlienWx)
set(AlienWx_DEBUG 1) set(AlienWx_DEBUG 1)
find_package(AlienWx REQUIRED COMPONENTS base) find_package(AlienWx REQUIRED COMPONENTS base)
include_directories(${AlienWx_INCLUDE_DIR}) include_directories(${AlienWx_INCLUDE_DIRS})
string(APPEND CMAKE_CXX_FLAGS " ${AlienWx_CXX_FLAGS}") #add_compile_options(${AlienWx_CXX_FLAGS})
add_definitions(${AlienWx_DEFINITIONS}) add_definitions(${AlienWx_DEFINITIONS})
target_link_libraries(XS ${AlienWx_LIBRARIES}) target_link_libraries(XS ${AlienWx_LIBRARIES})
else () else ()