From 58788ef43aa5b5b09453b39ed21802baf44ce461 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Mon, 12 Mar 2018 09:39:32 +0100 Subject: [PATCH 1/3] MSVC: Fix run and debug project settings (#771) * MSVC: Fix run and debug project settings * MSVC: Fix CMake infinite loop --- CMakeLists.txt | 7 ++++--- cmake/msvc/slic3r.wperl64d.props | 9 --------- cmake/msvc/xs.wperl64d.props | 7 +++++++ doc/How to build - Windows.md | 28 +++++++++++++++++----------- xs/CMakeLists.txt | 11 +++-------- 5 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 cmake/msvc/slic3r.wperl64d.props diff --git a/CMakeLists.txt b/CMakeLists.txt index b5f7cdec2..2b860068b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,15 +50,16 @@ if(NOT DEFINED CMAKE_PREFIX_PATH) endif() endif() +add_subdirectory(xs) + if (MSVC) # By default the startup project in MSVC is the 'ALL_BUILD' cmake-created project, # but we want 'slic3r' as the startup one because debugging run command is associated with it. # (Unfortunatelly it cannot be associated with ALL_BUILD using CMake.) - set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT slic3r) + # Note: For some reason this needs to be set in the top-level CMakeLists.txt + set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT XS) endif () -add_subdirectory(xs) - enable_testing () get_filename_component(PERL_BIN_PATH "${PERL_EXECUTABLE}" DIRECTORY) add_test (NAME xs COMMAND "${PERL_EXECUTABLE}" ${PERL_BIN_PATH}/prove -I ${PROJECT_SOURCE_DIR}/local-lib/lib/perl5 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/xs) diff --git a/cmake/msvc/slic3r.wperl64d.props b/cmake/msvc/slic3r.wperl64d.props deleted file mode 100644 index 68dac2085..000000000 --- a/cmake/msvc/slic3r.wperl64d.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - C:\wperl64d\bin\perl.exe - slic3r.pl - WindowsLocalDebugger - ..\.. - - diff --git a/cmake/msvc/xs.wperl64d.props b/cmake/msvc/xs.wperl64d.props index 101923581..b604a56e2 100644 --- a/cmake/msvc/xs.wperl64d.props +++ b/cmake/msvc/xs.wperl64d.props @@ -8,4 +8,11 @@ + + + C:\wperl64d\bin\perl.exe + slic3r.pl + WindowsLocalDebugger + ..\.. + diff --git a/doc/How to build - Windows.md b/doc/How to build - Windows.md index 8209954bd..104720b34 100644 --- a/doc/How to build - Windows.md +++ b/doc/How to build - Windows.md @@ -50,7 +50,6 @@ and use these commands to build the Slic3r from the command line: cd build cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release nmake - ctest --verbose # TODO: ??? cd .. perl slic3r.pl @@ -60,27 +59,34 @@ You may also build Slic3r PE with other build tools: ### Building with Visual Studio -To build, lanuch and/or debug Slic3r PE with Visual Studio (64 bits), replace the `cmake` command with: +To build and debug Slic3r PE with Visual Studio (64 bits), replace the `cmake` command with: - cmake .. -G "Visual Studio 12 Win64" -DCMAKE_CONFIGURATION_TYPES=Release;RelWithDebInfo || exit /b + cmake .. -G "Visual Studio 12 Win64" -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo For the 32-bit variant, use: - cmake .. -G "Visual Studio 12" -DCMAKE_CONFIGURATION_TYPES=Release;RelWithDebInfo || exit /b + cmake .. -G "Visual Studio 12" -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo -After `cmake` has finished, go to the `Slic3r\build` directory and open the `Slic3r.sln` solution file. -This should open Visual Studio and load all the Slic3r solution containing all the projects. +After `cmake` has finished, go to the build directory and open the `Slic3r.sln` solution file. +This should open Visual Studio and load the Slic3r solution containing all the projects. Make sure you use Visual Studio 2013 to open the solution. -You can then use the usual Visual Studio controls to build Slic3r. -If you want to run or debug Slic3r from within Visual Studio, make sure the `slic3r` project is activated. -There are multiple projects in the Slic3r solution, but only the `slic3r` project is configured with the right -commands to run Slic3r. +You can then use the usual Visual Studio controls to build Slic3r (Hit `F5` to build and run with debugger). +If you want to run or debug Slic3r from within Visual Studio, make sure the `XS` project is activated. +It should be set as the Startup project by CMake by default, but you might want to check anyway. +There are multiple projects in the Slic3r solution, but only the `XS` project is configured with the right +commands to run and debug Slic3r. +The above cmake commands generate Visual Studio project files with the `RelWithDebInfo` configuration only. +If you also want to use the `Release` configuration, you can generate Visual Studio projects with: + + -DCMAKE_CONFIGURATION_TYPES=Release;RelWithDebInfo + +(The `Debug` configuration is not supported as of now.) ### Building with ninja -To use [Ninja](TODO), replace the `cmake` and `nmake` commands with: +To use [Ninja](https://ninja-build.org/), replace the `cmake` and `nmake` commands with: cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release ninja diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt index 590b5d24f..db7a3eead 100644 --- a/xs/CMakeLists.txt +++ b/xs/CMakeLists.txt @@ -626,14 +626,9 @@ elseif (NOT MSVC) endif () if (MSVC) - # Here we associate some additional properties with the MSVC projects to enable compilation and debugging out of the box. - # It seems a props file needs to be copied to the same dir as the proj file, otherwise MSVC doesn't load it up. - # For copying, the configure_file() function seems to work much better than the file() function. - configure_file("${PROJECT_SOURCE_DIR}/cmake/msvc/xs.wperl64d.props" ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) - set_target_properties(XS PROPERTIES VS_USER_PROPS "xs.wperl64d.props") - configure_file("${PROJECT_SOURCE_DIR}/cmake/msvc/slic3r.wperl64d.props" ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) - set_target_properties(slic3r PROPERTIES VS_USER_PROPS "slic3r.wperl64d.props") -endif () + # Here we associate some additional properties with the MSVC project to enable compilation and debugging out of the box. + set_target_properties(XS PROPERTIES VS_USER_PROPS "${PROJECT_SOURCE_DIR}/cmake/msvc/xs.wperl64d.props") +endif() # Installation From bd61c233a592d17b342cf7484a3dbba93d072d0e Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Mon, 12 Mar 2018 20:38:47 +0100 Subject: [PATCH 2/3] CMake target to generate the main pot file (#786) --- resources/localization/list.txt | 36 ++++++++++++++++----------------- xs/CMakeLists.txt | 9 +++++++++ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/resources/localization/list.txt b/resources/localization/list.txt index 63919ec35..5a6965d6a 100644 --- a/resources/localization/list.txt +++ b/resources/localization/list.txt @@ -1,18 +1,18 @@ -c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\BedShapeDialog.hpp -c:\src\Slic3r\xs\src\slic3r\GUI\GUI.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\Tab.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\Tab.hpp -c:\src\Slic3r\xs\src\slic3r\GUI\Field.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\OptionsGroup.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\2DBed.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\PresetHints.cpp -c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.hpp -c:\src\Slic3r\xs\src\slic3r\GUI\Preferences.cpp -C:\src\Slic3r\xs\src\libslic3r\PrintConfig.cpp -c:\src\Slic3r\xs\src\libslic3r\GCode\PreviewData.cpp -c:\src\Slic3r\lib\Slic3r\GUI.pm -c:\src\Slic3r\lib\Slic3r\GUI\MainFrame.pm -c:\src\Slic3r\lib\Slic3r\GUI\Plater.pm -c:\src\Slic3r\lib\Slic3r\GUI\Plater\2D.pm -c:\src\Slic3r\lib\Slic3r\GUI\Plater\3DPreview.pm +xs/src/slic3r/GUI/BedShapeDialog.cpp +xs/src/slic3r/GUI/BedShapeDialog.hpp +xs/src/slic3r/GUI/GUI.cpp +xs/src/slic3r/GUI/Tab.cpp +xs/src/slic3r/GUI/Tab.hpp +xs/src/slic3r/GUI/Field.cpp +xs/src/slic3r/GUI/OptionsGroup.cpp +xs/src/slic3r/GUI/2DBed.cpp +xs/src/slic3r/GUI/PresetHints.cpp +xs/src/slic3r/GUI/Preferences.hpp +xs/src/slic3r/GUI/Preferences.cpp +xs/src/libslic3r/PrintConfig.cpp +xs/src/libslic3r/GCode/PreviewData.cpp +lib/Slic3r/GUI.pm +lib/Slic3r/GUI/MainFrame.pm +lib/Slic3r/GUI/Plater.pm +lib/Slic3r/GUI/Plater/2D.pm +lib/Slic3r/GUI/Plater/3DPreview.pm diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt index db7a3eead..ce16a08f5 100644 --- a/xs/CMakeLists.txt +++ b/xs/CMakeLists.txt @@ -630,6 +630,15 @@ if (MSVC) set_target_properties(XS PROPERTIES VS_USER_PROPS "${PROJECT_SOURCE_DIR}/cmake/msvc/xs.wperl64d.props") endif() +# l10n +set(L10N_DIR "${PROJECT_SOURCE_DIR}/resources/localization") +add_custom_target(pot + COMMAND xgettext --keyword=L --from-code=UTF-8 --debug + -f "${L10N_DIR}/list.txt" + -o "${L10N_DIR}/Slic3rPE.pot" + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + COMMENT "Generate pot file from strings in the source tree" +) # Installation install(TARGETS XS DESTINATION ${PERL_VENDORARCH}/auto/Slic3r/XS) From 0781dd8271ad2388a065fd4cac94407ba7d550c7 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Tue, 13 Mar 2018 13:41:19 +0100 Subject: [PATCH 3/3] Fix unix build: set openssl path directly rather than via pkg-config (#789) --- doc/deps-build/unix-static/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/deps-build/unix-static/Makefile b/doc/deps-build/unix-static/Makefile index e7588b994..71e46320b 100644 --- a/doc/deps-build/unix-static/Makefile +++ b/doc/deps-build/unix-static/Makefile @@ -82,11 +82,11 @@ $(OPENSSL).tar.gz: libcurl: libopenssl $(CURL).tar.gz tar -zxvf $(CURL).tar.gz -# XXX: disable shared? -# Setting PKG_CONFIG_PATH should make libcurl find our previously built openssl - cd $(CURL) && PKG_CONFIG_PATH=$(DESTDIR)/usr/local/lib/pkgconfig ./configure \ +# Note: It seems setting custom openssl path doesn't work when pkg-config and system openssl devel libs are installed + cd $(CURL) && ./configure \ --enable-static \ --enable-shared \ + --with-ssl=$(DESTDIR)/usr/local \ --with-pic \ --enable-ipv6 \ --enable-versioned-symbols \