Browse files

librados examples: link and include from current source tree by default.

Fixes #15100. The Makefile now by default links and includes from the
current source tree's librados and offers another option for building
examples against the system's.

Signed-off-by: Jesse Williamson <>
  • Loading branch information...
1 parent 2c05ca3 commit 109e6022beb0920f2a4746bd8c541e975494f251 Jesse Williamson committed with chardan Mar 17, 2016
Showing with 36 additions and 12 deletions.
  1. +31 −11 examples/librados/Makefile
  2. +5 −1 examples/librados/hello_world.readme
@@ -1,15 +1,35 @@
-CXXFLAGS=-std=c++0x -I../../src/include
-all: librados_hello_world librados_hello_world_c
- g++ -g -c -o hello_world.o $(CXXFLAGS)
- g++ -g hello_world.o -lrados -o librados_hello_world $(LDFLAGS)
+CXX_FLAGS?=-std=c++11 -Wall -Wextra -Werror -g
+CXX_LIBS?=-lboost_system -lrados
-librados_hello_world_c: hello_world_c.c
- cc -g -c hello_world_c.c -o hello_world_c.o $(CFLAGS)
- cc -g hello_world_c.o -lrados -o librados_hello_world_c $(LDFLAGS)
+CC_FLAGS=-Wall -Wextra -Werror -g
+# Relative path to the Ceph source:
+LOCAL_LIBRADOS?=-L$(CEPH_SRC_HOME)/.libs/ -Wl,-rpath,$(CEPH_SRC_HOME)/.libs
+all: hello_world_cpp hello_world_c
+# Build against the system librados instead of the one in the build tree:
+all-system: LOCAL_LIBRADOS=
+all-system: LOCAL_LIBRADOS_INC=
+all-system: all
+ $(CXX_CC) -o hello_world_cpp
+hello_world_c: hello_world_c.c
+ $(CC_CC) -o hello_world_c hello_world_c.c
- rm hello_world.o librados_hello_world
- rm hello_world_c.o librados_hello_world_c
+ rm -f hello_world_cpp hello_world_c
@@ -1,10 +1,14 @@
This simple librados program can be built by running "make" (and cleaned up
with "make clean"), assuming you have librados-dev already installed.
+By default, the makefile will build against the librados headers and library in your
+build tree (ie. using relative paths). If you would like to build the examples against
+your system librados and headers, use "make all-system".
And executed using
./librados_hello_world -c ../../src/ceph.conf
(or whatever path to a ceph.conf is appropriate to you, or
by explicitly specifying monitors, user id, and keys).
It demonstrates using librados in a non-Ceph project and the code should
-be self-explanatory.
+be self-explanatory.

0 comments on commit 109e602

Please sign in to comment.