ReactiveX / RxCpp

Reactive Extensions for C++
Apache License 2.0
3.07k stars 396 forks source link

Build instructions for Windows don't work #384

Open ppietrasa opened 7 years ago

ppietrasa commented 7 years ago

The build instructions for Windows (from README.md) are:

mkdir projects\build
cd projects\build
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -B. ..\CMake
nmake

My CMake version is:

build>cmake --version
cmake version 3.2.2

My CMake output is:

RxCpp-4.0.0-1('x64-win32-msvc2015-rel')|E:\dev\mkbpkgs.tk_\.builds\RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel\RxCpp-4.0.0\projects\
build>cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -B. ..\CMake
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: D:/Programme (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe
-- Check for working C compiler: D:/Programme (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: D:/Programme (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe
-- Check for working CXX compiler: D:/Programme (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- Looking for include file pthread.h
-- Looking for include file pthread.h - not found
-- Found Threads: TRUE
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- RXCPP_DIR: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0
-- CMAKE_CXX_COMPILER_ID: MSVC
-- msvc compiler version: 19.0.24215.1
-- using msvc settings
-- Configuring done
-- Generating done
-- Build files have been written to: E:/dev/mkbpkgs.tk_/.builds/RxCpp-4.0.0-cxfp5r7o.x86_64_win32_msvc2015_rel/RxCpp-4.0.0/projects/bui
ld

My nmake output is:

build>nmake

Microsoft (R) Program Maintenance Utility, Version 14.00.24210.0
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Scanning dependencies of target RxCpp
Linking CXX shared library RxCpp.dll
LINK : error LNK2001: Nicht aufgel÷stes externes Symbol "_DllMainCRTStartup".
RxCpp.dll : fatal error LNK1120: 1 nicht aufgel÷ste Externe
LINK Pass 1 failed. with 1120
NMAKE : fatal error U1077: "E:\dev\mkbpkgs.tk_\build\cmake-3.2.2-4tx6qewx.x86_32_win32\bin\cmake.exe": Rückgabe-Code "0xffffffff"
Stop.
NMAKE : fatal error U1077: ""D:\Programme (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""D:\Programme (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"": Rückgabe-Code "0x2"
Stop.

Is building the RxCpp.dll even supported? At first glance I see only *.hpp stuff below Rx/v2/src/rxcpp. More grepping the project for dllexport __declspec didn't give me any results and so I'm a little bit confused.

anatoly-spb commented 7 years ago

RxCpp is header only library, so to use it inside your project you should include only headers without building any artifacts (lib, a).

ppietrasa commented 7 years ago

Thank you.

So I figure the correct "build" instructions for Windows would simply be:

cd projects\build
cmake -G"NMake Makefiles" -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR_OF_YOUR_CHOICE> -DCMAKE_BUILD_TYPE=RelWithDebInfo -B. ..\CMake
nmake install

This ^^ did work.