Project

General

Profile

Start to build Scol using CMAKE » History » Version 20

brainsandwich, 06/29/2015 04:44 PM

1 1 arkeon
h1. Start to build Scol using CMAKE
2
3
4 20 brainsandwich
h2. Tools
5 1 arkeon
6 20 brainsandwich
h3. Common to all platforms
7 1 arkeon
8 20 brainsandwich
* "CMake":http://www.cmake.org/download/
9
* Visual Studio (not free)
10
* "Tortoise SVN":http://tortoisesvn.net/ (or any SVN client)
11
* "Tortoise git":https://code.google.com/p/tortoisegit/ (or any Git client too)
12 1 arkeon
13 20 brainsandwich
h3. Windows target
14 1 arkeon
15 20 brainsandwich
The minimum compiler supported is the one in Visual Studio 2010.
16
You can try with a newer version at your own risks !
17 1 arkeon
18 20 brainsandwich
h3. Android target
19 1 arkeon
20 20 brainsandwich
_With standard tools_
21 1 arkeon
22 20 brainsandwich
i.e. free tools found on the web or provided by Google
23 1 arkeon
24 20 brainsandwich
* "Java Development Kit (JDK)":http://www.oracle.com/technetwork/java/javase/downloads
25
* "Android SDK":https://developer.android.com/sdk/installing
26
* "Native Development Kit (NDK)":https://developer.android.com/tools/sdk/ndk
27
* "Apache ANT":http://ant.apache.org/
28 1 arkeon
29 20 brainsandwich
_With Tegra Android Development Pack_
30 10 brainsandwich
31 20 brainsandwich
A package provided by Nvidia to build applications for Android. The download process requires authentication to the Nvidia Developper Network (it's free and not too spammy though)
32
33
* "TADP":https://developer.nvidia.com/gameworksdownload
34
* On setup, let it download everything or at least the tools described in the previous section.
35
36
_SDK preparation_
37
38
You should launch the SDK to download other tools like emulators for each API you want to target.
39
(Our target API is 17 so you can get any emulator above).
40
41
h3. Linux target
42
43
Not supported yet.
44
45
h3. Mac OS target
46
47
Not supported yet.
48
49
50 7 brainsandwich
h2. Get the Scol sources
51 1 arkeon
52 20 brainsandwich
Scol uses Subversion for source control and you can use your SVN client to get the source code.
53 6 arkeon
54 1 arkeon
So first retrieve the sources from "https://svn.scolring.org/trunk/", accept the certificate and go take some coffee.
55
The source directories contains most of the dependencies, and since some of them are modified they are provided in the sources.
56 7 brainsandwich
57 20 brainsandwich
Some sources like curl use Git as source control and are downloaded when building, so make sure it's installed before building the project
58 7 brainsandwich
59 20 brainsandwich
60
61 1 arkeon
h2. Dependencies search paths
62 8 brainsandwich
63 1 arkeon
h3. Windows
64
65
Once you get the sources, you can execute "setWindowsSearchPaths.bat" in the dependencies directory.
66
!!WARNING!! when you execute the bat file using the mouse the current directory is wrong.
67
You need to start a DOS command line "cmd.exe" as administrator and go to the dependencies directory to start the bat file manually.
68
 
69
This will add needed environment variables and paths.
70
71
h3. Android
72
73 20 brainsandwich
If you downloaded the TADP, the following variables are likely to be defined already (or they should look alike).
74
If not, add these to the environment variables
75 1 arkeon
* ANDROID_HOME : path/to/sdk
76
* ANDROID_SDK_HOME : path/to/sdk
77
* ANDROID_SDK : path/to/sdk
78
* ANDROID_NDK : path/to/ndk
79
* ANT_HOME : path/to/ant
80 7 brainsandwich
* JAVA_HOME : path/to/jdk -- should be something like "C:\Progra~1\Java\<jdkfolder>"
81 1 arkeon
* CMAKE : path/to/cmake
82 7 brainsandwich
83 20 brainsandwich
Then you should add these variables into the PATH:
84 1 arkeon
85
@%ANDROID_NDK%;%ANT_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%CMAKE%;%JAVA_HOME%\bin;@
86
87 20 brainsandwich
88
89
90 1 arkeon
h2. Build needed dependencies
91
92 20 brainsandwich
h3. From Windows, for Windows
93 1 arkeon
94 20 brainsandwich
1. Launch cmake-gui from a Visual Studio command line (it configures environment so you can build things correctly)
95
2. Specify the source folder to trunk/dependencies and the build to trunk/dependencies/build/windows/x86
96
3. Hit configure, specifying no toolchain, using your Visual Studio version as generator.
97
4. Wait for things to set up
98
5. Configure again
99
6. Generate
100
7. Build the project in Visual Studio (Build->Batch Build, check debug and release for "INSTALL" configuration)
101
8. Wait for completion
102
9. Read the start of the output of "CMake configure" and do as it says (it says you have to check/uncheck some "SCOL_" configuration variables)
103
10. Repeat steps 4 to 8 until everything's built
104 7 brainsandwich
105 20 brainsandwich
h3. From Windows, for Android
106 7 brainsandwich
107 20 brainsandwich
Do the same as for Windows target, but
108
* Set source folder to trunk/dependencies and build folder to trunk/scol/build/android/<target abi>
109
* Specify the generator : "NMake"
110
* The toolchain for crosscompile : trunk/dependencies/CMake/toolchain/android.toolchain.cmake
111
* Build dependencies with "nmake install" command from a command line.
112 13 brainsandwich
113
114 19 brainsandwich
115 20 brainsandwich
116 19 brainsandwich
h2. Build the Scol project
117 13 brainsandwich
118 20 brainsandwich
As for the dependencies:
119 13 brainsandwich
120 20 brainsandwich
h3. Windows target
121 3 arkeon
122 20 brainsandwich
* Set source folder to trunk/scol and build folder to trunk/scol/build/windows/x86
123
* Configure, generate and build from Visual Studio
124
125
h3. Android target
126
127
* Set source folder to trunk/scol and build folder to trunk/scol/build/android/<target abi>
128
* If you're using Nsight with Visual Studio (TADP), some build paramaters should be modified for each build if you want to install and test the project on a device :
129
  - Open ScolLauncher subproject -> properties
130
  - Configuration Properties -> General -> Configuration Type -> Make Application (ndk-build -> .apk|.so|.a)
131
  - Configuration Properties -> Deployment -> Fast Deploy -> No
132
  - Configuration Properties -> Ant Build -> Skip Ant Step -> No
133
* Without TADP, after it's build, go to trunk/scol/build/android/<target abi>/App/bin, and run "ant debug install" if you wish to install the project on an emulator or your device  
134 1 arkeon
135
h1. Start your new plugin
136
137
h2. Source paths
138
139
Start by creating a directory with your new plugin name in the trunk/scol/plugins folder.
140
For example trunk/scol/plugins/myPlugin
141 4 arkeon
142
Usually we prefer to separate the sources and the includes.
143 1 arkeon
So creates a "src" and "include" directory in your plugin folder.
144
145
Creates the empty files you will need for your project, usually :
146
- include/myplugin.h for your classes declaration
147
- src/myplugin.cpp for your classes definition
148
- src/scolplugin.cpp for the Scol binding functions
149
150
h2. Dependencies
151
152
If your project need an external SDK or dependencies, add then in the trunk/dependencies directory.
153
Then create a findMydepname.cmake file in trunk\scol\CMake\Packages.
154
You can copy and change an existing Find.cmake file to make yours.
155
Start from a simple one like FindMyo.cmake for example.
156
157
h2. Cmake files
158
159
It's time to creates the CMAKE script for your plugin.
160
161
Create a "CMakeLists.txt" file in the plugin directory.
162
trunk/scol/plugins/myPlugin/CMakeLists.txt
163
164
And edit the file with a text editor.
165
166
<pre>
167
#-------------------------------------------------------------------
168
# This file is part of the CMake build system for Scol
169
#
170
# The contents of this file are placed in the public domain. Feel
171
# free to make use of it in any way you like.
172
#-------------------------------------------------------------------
173
174
############################################################
175
# CmakeList file for Myplugin
176
############################################################
177
178
#Your project name
179
PROJECT(myPLugin)
180
181
# define header and source files for the library
182
set (MYPLUGIN_HEADER_FILES
183
  include/myplugin.h
184
)
185
186
set (MYPLUGIN_SOURCE_FILES
187
  src/myplugin.cpp
188
  src/scolplugin.cpp
189
)
190
191
# Add includes directories from dependencies
192
#  include_directories(include ${MYDEP_INCLUDE_DIRS})
193
194
# Add definition for P4 optimizations, warnings removal.
195
add_definitions(-DOPTI_P4 -D_CRT_SECURE_NO_WARNINGS -D)
196
197
# Add dependencies libraries
198
#  set(LIBRARIES
199
#    ${MYDEP_LIBRARIES}
200
#    ${ZLIB_LIBRARIES}
201
#    ${PNG_LIBRARIES}
202
#  )
203
204
# setup Scol plugin target
205
add_library(myPLugin
206
  ${Scol_LIB_TYPE}
207
  ${MYPLUGIN_HEADER_FILES}
208
  ${MYPLUGIN_SOURCE_FILES}
209
)
210
add_dependencies(myPLugin kernel)
211
212
# set the dll version.
213
set_target_properties(myPLugin PROPERTIES VERSION ${Scol_VERSION} SOVERSION ${Scol_VERSION_MAJOR})
214
target_link_libraries(myPLugin ${LIBRARIES})
215
216
# install Scol
217
scol_config_plugin(myPLugin)
218
install(FILES ${MYPLUGIN_HEADER_FILES} DESTINATION include/SCOL/plugins/myPLugin)
219
</pre>
220
221
Now we need to declare this new plugin in the common Scol cmake files.
222
Edit the trunk/scol/CMakeLists.txt file and add your plugin definition like the following.
223
224
If you don't have dependencies.
225
<pre>
226
option(Scol_BUILD_MYPLUGIN "Build myPluginplugin, my library" TRUE)
227
</pre>
228
229
If you have depencies
230
<pre>
231
cmake_dependent_option(Scol_BUILD_MYPLUGIN "Build myPlugin, my library." TRUE "MYDEP_FOUND;ZLIB_FOUND;PNG_FOUND" FALSE)
232
</pre>
233
234
Now edit the trunk/scol/plugin/CMakeLists.txt file and add the following.
235
<pre>
236
# Configure myPlugin plugin build
237
if (Scol_BUILD_MYPLUGIN)
238
  add_subdirectory(myPlugin)
239
endif ()
240
</pre>
241
242
Only if you have dependencies, edit the trunk/scol/CMake/ScolDependencies.cmake file and add the dependencies resolution as the following
243
244
<pre>
245
# Find MyDep
246
find_package(MYDEP)
247
macro_log_feature(MYDEP_FOUND "Mydep" "MydepLibrary" "http://Mydep.org/" FALSE "" "")
248
</pre>
249
250
h2. Almost done
251
252
Open the CMAKE-gui again.
253
Hit the "Configure button" and check if you found your plugin in the scol group.
254
Then hit the generate button, and open the scol.sln project again.
255
256
You should have the project added in Visual Studio.