Advertisement
Guest User

Untitled

a guest
Oct 4th, 2018
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.28 KB | None | 0 0
  1. SOURCES:=hello.cpp here.cpp bye.cpp
  2. LIBNAME:=mylib
  3. MAJOR:=5
  4. MINOR:=1
  5. RELEASE:=10
  6. BUILD_DIR:=build
  7. INSTALL_DIR:=out
  8.  
  9. LIB_SYMLINK_NAME:=lib$(LIBNAME).so
  10. LIB_SONAME:=$(LIB_SYMLINK_NAME).$(MAJOR)
  11. LIB_FILENAME:=$(LIB_SONAME).$(MINOR).$(RELEASE)
  12.  
  13. OBJECTS:=$(patsubst %.cpp,$(BUILD_DIR)/%.o,$(SOURCES))
  14.  
  15. all: libs $(INSTALL_DIR)/main
  16.  
  17. libs: $(INSTALL_DIR)/$(LIB_FILENAME) $(INSTALL_DIR)/mylib.a
  18.  
  19. mrproper: clean
  20.     rm -rf $(INSTALL_DIR)
  21.  
  22. clean:
  23.     rm -rf $(BUILD_DIR)
  24.  
  25. $(BUILD_DIR):
  26.     mkdir -p $(BUILD_DIR)
  27.  
  28. $(INSTALL_DIR):
  29.     mkdir -p $(INSTALL_DIR)
  30.  
  31. # Process dependencies on headers
  32. -include $(patsubst %.cpp, $(BUILD_DIR)/%.d, $(SOURCES))
  33.  
  34. # Build object files
  35. $(BUILD_DIR)/%.o: %.cpp | build
  36.     $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MMD -fPIC -c -o $@ $<
  37.  
  38. .PHONY: mrproper clean all libs
  39.  
  40. # Build a dynamic library
  41. $(INSTALL_DIR)/$(LIB_FILENAME): $(OBJECTS) | out
  42.     $(CXX) $(LDFLAGS) -Wl,-soname=$(LIB_SONAME) -shared -fPIC -o $@ $^
  43.     ln -sf $(LIB_FILENAME) $(INSTALL_DIR)/$(LIB_SONAME)
  44.     ln -sf $(LIB_FILENAME) $(INSTALL_DIR)/$(LIB_SYMLINK_NAME)
  45.  
  46. # Build a static library
  47. $(INSTALL_DIR)/mylib.a: $(OBJECTS) | out
  48.     $(AR) cr -o $@ $^
  49.  
  50. # Build an executable statically linked with the library
  51. $(INSTALL_DIR)/main: $(OBJECTS) $(BUILD_DIR)/main.o | out
  52.     $(CXX) $(LDFLAGS) -o $@ $^
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement