From a911060e06a8683864e567239621c4a67de22c7d Mon Sep 17 00:00:00 2001 From: Eugeny Kalishenko Date: Sun, 29 Nov 2015 19:03:57 +0300 Subject: [PATCH] Added readme adout cmake build system using --- build/cmake/readme.md | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 build/cmake/readme.md diff --git a/build/cmake/readme.md b/build/cmake/readme.md new file mode 100644 index 00000000..ae2034e5 --- /dev/null +++ b/build/cmake/readme.md @@ -0,0 +1,93 @@ +Building library with CMake +=============== + +CDS suports both in-source and out-of-source cmake build types. Now project uses: + +- CMake: general cross-platform building +- CTest: all unit tests can be run in a standard way by *ctest* command +- CPack: for making rpm/deb/nsys etc. packages + +Compiling and testing +---------- +**Building out-of-source in "RELEASE" mode ("DEBUG" is default)** + +- Wherever create empty directory for building, for instance *libcds-debug* +- Prepare: *cmake -DCMAKE_BUILD_TYPE=RELEASE * +- Compile: *make -j4* +- As a result you'll see shared and static cds libraries in the build directory + +After using command *cmake -L * one can see some additional variables, that can activate additional features: + +- *WITH_TESTS:BOOL=OFF*: if you want to build library with unit testing support use *-DWITH_TESTS=ON* on prepare step. Be careful with this flag, because compile time will dramatically increase +- *WITH_BOOST_ATOMIC:BOOL=OFF*: Use boost atomics (only for boost >= 1.54) +- ... + +Packaging +---------- + +In order to package library *CPack* is used, command *cpack -G * should create correspondent packages for particular operating system. Now the project supports building the following package types: + +- *RPM*: redhat-based linux distribs +- *DEB*: debian-based linux distribs +- *TGZ*: simple "*tgz*" archive with library and headers +- *NSYS*: windows installer package (NSYS should be installed) + +"Live" building and packaging example +---------- +- git clone https://github.com/khizmax/libcds.git +- mkdir libcds-release +- cd libcds-release +- cmake -DWITH\_TESTS=ON -DCMAKE\_BUILD_TYPE=RELEASE ../libcds + + -- The C compiler identification is GNU 4.8.3 + -- The CXX compiler identification is GNU 4.8.3 + ... + -- Found Threads: TRUE + -- Boost version: 1.54.0 + -- Found the following Boost libraries: + -- system + -- thread + Build type -- RELEASE + -- Configuring done + -- Generating done + -- Build files have been written to: <...>/libcds-release + +- make -j4 + + Scanning dependencies of target cds + Scanning dependencies of target test-common + Scanning dependencies of target cds-s + Scanning dependencies of target test-hdr-offsetof + [ 1%] Building CXX object CMakeFiles/cds-s.dir/src/hp_gc.cpp.o + ... + [100%] Built target test-hdr + gmake: выход из каталога «/home/kel/projects_cds/libcds-debug» + +- ctest + + Test project /home/kel/projects_cds/libcds-debug + Start 1: test-hdr + 1/7 Test #1: test-hdr ......................... Passed 1352.24 sec + Start 2: cdsu-misc + 2/7 Test #2: cdsu-misc ........................ Passed 0.00 sec + Start 3: cdsu-map + ... + +- cpack -G RPM + + CPack: Create package using RPM + CPack: Install projects + CPack: - Run preinstall target for: cds + CPack: - Install project: cds + CPack: - Install component: devel + CPack: - Install component: lib + CPack: Create package + CPackRPM:Debug: Adding /usr/local to builtin omit list. + CPackRPM: Will use GENERATED spec file: /home/kel/projects_cds/libcds-debug/_CPack_Packages/Linux/RPM/SPECS/cds-devel.spec + CPackRPM: Will use GENERATED spec file: /home/kel/projects_cds/libcds-debug/_CPack_Packages/Linux/RPM/SPECS/cds-lib.spec + CPack: - package: /home/kel/projects_cds/libcds-debug/cds-2.1.0-1-devel.rpm generated. + CPack: - package: /home/kel/projects_cds/libcds-debug/cds-2.1.0-1-lib.rpm generated. + +Future development +---------- +- CDash: use CI system \ No newline at end of file -- 2.34.1