Skip to content

CMakeLists in node.native + seperate project? #33

Description

@AlecTaylor

How do I setup a separate project that works with node.native (from git, not from install library locations)?

Here is what I have tried:

git clone https://github.com/d5/node.native.git
mkdir routing_tests && cd $_

Then I created main.cpp and CMakeLists.txt:

project(routing_tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
include_directories(../node.native/ ../node.native/native)
include_directories(../node.native/libuv ../node.native/libuv/include ../node.native/http-parser)

But unfortunately I get these errors: Qt Creator screenshot

How do I fix this? - Also, are you planning on moving from vanilla Makefiles to CMake?

Activity

  1. sebjameswml commented on Jan 14, 2014

    @sebjameswml
    Contributor

    Hi Alec,

    You'll need to link to libuv.so - you'll have to cook that into your CMakeLists.txt file.

    You'll also need to link http-parser.o into your executable.

    Here's how I do this for a project I've been developing where I've used autotools, so this is a Makefile.am (which gets turned into Makefile.in, then finally into a Makefile).

    The program is called "dt":

    ===================================
    AUTOMAKE_OPTIONS = check-news dist-bzip2
    SUBDIRS = src
    bin_PROGRAMS = dt
    dt_SOURCES = dt.cpp
    dt_LDADD = src/ipp/libdtipp.la /usr/local/lib/libuv.a /usr/local/lib/http_parser.o
    INCLUDES = -I./usr/local/include
    CLEANFILES = *~
    MAINTAINERCLEANFILES = aclocal.m4 dt-*.tar.gz dt-*.tar.bz2 dt-*.diff
    ====================================
    

    Note that my includes are in /usr/local/include and my libs (libuv.so and http-parser.o) are in /usr/local/lib/

    I added a few lines to the node.native Makefile so that it would install the relevant files into /usr/local/include and /usr/local/lib/ on my Debian development system. This is really just a quick hack:

    =========================================================
    # Note: Copy in libuv and http-parser, as required with this? Will eventually make myself
    # a libnative shared object?
    install:
    # http-parser (headers and object code)
            cp http-parser/http_parser.h /usr/local/include/
    # libuv (headers and static lib)
            cp libuv/libuv.a /usr/local/lib/
            mkdir -p /usr/local/include/uv
            cp libuv/include/uv.h /usr/local/include/
            cp -Ra libuv/include/uv-private /usr/local/include/
    # node.native (headers only)
            cp -Ra native /usr/local/include/
    ================================================
    

    With this, I can do "make install" in node.native then go over to my "dt" directory and compile there.

    Hope that helps,

    Seb

  2. AlecTaylor commented on Jan 15, 2014

    @AlecTaylor
    Author

    Thanks Seb, will try that tonight.

    In the meantime, can you help me understand why people are writing vanilla Makefiles rather than using CMake?

    Isn't one of the big advantages of libuv that it abstracts cross-platform differences?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions