forked from pwsafe/pwsafe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.CMAKE.txt
85 lines (71 loc) · 3.71 KB
/
README.CMAKE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Why Cmake?
- Cmake provides a portable way of configuring the build environment
for passwordsafe.
- Source tree is untouched, all build-related files are in specified
"build" subdirectory (by convention under the main project
directory, "build" on unix/mac, "_build" on Windows.
passwordsafe.sln/Makefile is created under build directory.
(I'm using this to keep _build-mfc and _build-wx off the same source tree).
- Supports all Visual Studio versions, saving the need to update
manually when adding/removing files.
Step-by-step for getting started with Cmake using Visual Studio 2015.
1. After installing cmake, create a _build directory under pwsafe's
toplevel directory. To keep MFC & wxWidgets files separate, suggest
_build_mfc & _build_wx.
2. Start cmake-gui. Set "Where is the source code" to the top of the
git repository source tree, and "Where to build the binaries" to the
_build directory you created in the previous step depending on whether
you wish to build the MFC or wxWidgets version. To select the
wxWidgets version, check the box WX_WINDOWS, otherwise you will build the
MFC version.
3. Click on Configure. Select the Visual Studio platform. Cmake will
think a bit and the report errors: "CMake Error at [...] (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
GTEST_MAIN_LIBRARY)
To fix this, click on GTEST_ROOT and set it to the directory where
gtest is installed on your machine - for example: C:/local/src/gtest-svn/.
This should enable cmake to at least find the include directory.
Note: if you do not use the default locations for the built libraries
(e.g. different directories for the VS2012 & VS2015 builds), cmake will
not find the libraries but you can specify the pathe relative to the
GTEST_ROOT, e.g.,
GTEST_ROOT C:/local/src/gtest-svn
GTEST_LIBRARY .\build-vc14\Release
GTEST_LIBRARY_DEBUG .\build-vc14\Debug
GTEST_MAIN_LIBRARY .\build-vc14\Release
GTEST_MAIN_LIBRARY_DEBUG .\build-vc14\Debug
4. XML support: For the MFC build, you can choose either: (a)
XML_MSXML, which will use Microsoft's implementation for XML
validation, (b) XML_XERCESC, which uses the XercesC library, or (c)
neither, in which case the compiled program will not be able to import
XML data.
The wx build doesn't support XML_MSXML.
For Xerces XML processing, check the "Advanced" checkbox, and set the
values of XercesC_INCLUDE_DIR, XercesC_LIBRARY_DEBUG and
XercesC_LIBRARY_RELEASE to the correct values.
Note: Currently only 32-bit compilations are supported.
For example:
XercesC_INCLUDE_DIR C:/local/xerces-c-3.1.3-x86_64-windows-vc-14.0/include
XercesC_LIBRARY_DEBUG C:/local/xerces-c-3.1.3-x86-windows-vc-14.0/lib
XercesC_LIBRARY_RELEASE C:/local/xerces-c-3.1.3-x86-windows-vc-14.0/lib
5. If you wish to build the wxWidgets version, check the box WX_WINDOWS and
pick a different _build directory (e.g. _build_wx) so that your MFC files are
not overwritten. You will have to click Configure whenever you change the _build
directory.
In addition, you will need to define the following:
wxWidgets_ROOT_DIR C:/local/wxWidgets/3.0.2/
wxWidgets_LIB C:/local/wxWidgets/3.0.2/lib/vc140_lib
You may wish to define other variables from your environment e.g.
HHC C:/Program Files (x86)/HTML Help Workshop/hhc.exe
PERL_EXECUTABLE perl.exe
Note: wxWidgets_wxrc_EXECUTABLE is not required for pwsafe wxWidgets builds.
5. Click on Generate. This will create the passwordsafe.sln file in the appropriate
_build.
6. Open passwordsafe.sln and right-click on the pwsafe project, select
"Set as StartUp Project" and then build the solution.
For Linux, similarly, only to get started, do:
$ mkdir build
$ cd build
$ cmake-gui .. # configure stuff as needed
$ cmake ..
$ make