Fedora Linux Support Community & Resources Center
  #1  
Old 5th June 2012, 12:39 AM
roelj Offline
Registered User
 
Join Date: Jun 2009
Location: Netherlands
Age: 21
Posts: 279
linuxfirefox
Making a CMakeLists.txt

I'm trying to convert my Makefile to a CMakeLists.txt so that I can compile on Windows and Mac computers too.
I haven't found answers to all of my questions, so I hope somebody can help me.

Here's my Makefile:
Code:
#
#  Copyright (C) 2011, 2012  Roel Janssen <roel@moefel.org>
# ... GPLv3 or later copyright notice ...
# 

## The compiler command used to compile the stuff.
CC              = g++

## Required Boost libraries to build this application.
BOOST_STUFF     = -lboost_filesystem -lboost_system -lssl -lcrypto -pthread

## The Botan library is needed for the SHA-256 algorithm.
BOTAN_STUFF     = -lbotan

## Choose your prefered database back-end.
## Please note that you need to compile cppdb with support for this driver.
## Add either -lcppdb_postgresql, -lcppdb_sqlite3 or -lcppdb_mysql to DB_BACKENDS
DB_BACKENDS	= -lcppdb_sqlite3
DATABASE_STUFF  = -lcppdb $(DB_BACKENDS) -ldl

BUILD_TARGET    = build/Distributor
OPTIMIZATION    = -Wall -Wextra -Os

## A list of all objects.
# Left out: pop3.o
OBJECTS         = node.o http.o https.o \
sha256.o base64.o \
db_documents.o db_publishers.o db_crawler.o db_domainindexer.o \
xml_identifier.o xml_documents.o xml_configuration.o xml_publishers.o xml_authentication.o \
main.o

first: all

node.o: source/data/node.cpp source/data/node.h
	$(CC) $(OPTIMIZATION) -c source/data/node.cpp

http.o: source/technology/network/http.cpp source/technology/network/network.h
	$(CC) $(OPTIMIZATION) $(BOOST_STUFF) -c source/technology/network/http.cpp

https.o: source/technology/network/https.cpp source/technology/network/network.h
	$(CC) $(OPTIMIZATION) $(BOOST_STUFF) -c source/technology/network/https.cpp

pop3.o: source/technology/network/pop3.cpp source/technology/network/network.h
	$(CC) $(OPTIMIZATION) $(BOOST_STUFF) -c source/technology/network/pop3.cpp

pop3s.o: source/technology/network/pop3s.cpp source/technology/network/network.h
	$(CC) $(OPTIMIZATION) $(BOOST_STUFF) -c source/technology/network/pop3s.cpp

sha256.o: source/technology/encryption/sha256.cpp source/technology/encryption/encryption.h
	$(CC) $(OPTIMIZATION) $(BOTAN_STUFF) -c source/technology/encryption/sha256.cpp

base64.o: source/technology/encryption/base64.cpp source/technology/encryption/encryption.h
	$(CC) $(OPTIMIZATION) $(BOTAN_STUFF) -c source/technology/encryption/base64.cpp

db_publishers.o: source/technology/database/publishers.cpp source/technology/database/publishers.h
	$(CC) $(OPTIMIZATION) -c source/technology/database/publishers.cpp -o db_publishers.o 

db_documents.o: source/technology/database/documents.cpp source/technology/database/documents.h
	$(CC) $(OPTIMIZATION) -c source/technology/database/documents.cpp -o db_documents.o

db_crawler.o: source/technology/database/crawler.cpp source/technology/database/crawler.h
	$(CC) $(OPTIMIZATION) -c source/technology/database/crawler.cpp -o db_crawler.o

db_domainindexer.o: source/technology/database/domainindexer.cpp source/technology/database/domainindexer.h
	$(CC) $(OPTIMIZATION) -c source/technology/database/domainindexer.cpp -o db_domainindexer.o

xml_documents.o: source/technology/xml/documents.cpp source/technology/xml/parsers.h 
	$(CC) $(OPTIMIZATION) -c source/technology/xml/documents.cpp -o xml_documents.o

xml_identifier.o: source/technology/xml/identifier.cpp source/technology/xml/parsers.h
	$(CC) $(OPTIMIZATION) -c source/technology/xml/identifier.cpp -o xml_identifier.o

xml_configuration.o: source/technology/xml/configuration.cpp source/technology/xml/parsers.h
	$(CC) $(OPTIMIZATION) -c source/technology/xml/configuration.cpp -o xml_configuration.o

xml_publishers.o: source/technology/xml/publishers.cpp source/technology/xml/parsers.h
	$(CC) $(OPTIMIZATION) -c source/technology/xml/publishers.cpp -o xml_publishers.o

xml_authentication.o: source/technology/xml/authentication.cpp source/technology/xml/parsers.h
	$(CC) $(OPTIMIZATION) -c source/technology/xml/authentication.cpp -o xml_authentication.o

main.o: source/main.cpp
	$(CC) $(OPTIMIZATION) $(DATABASE_STUFF) $(BOTAN_STUFF) $(BOOST_STUFF) -c source/main.cpp

all: $(OBJECTS)
	$(CC) $(OPTIMIZATION) $(DATABASE_STUFF) $(BOOST_STUFF) $(BOTAN_STUFF) $(OBJECTS) -o $(BUILD_TARGET)

clean:
	rm -rf $(OBJECTS)

clean-all:
	rm -rf $(OBJECTS) $(BUILD_TARGET)

install:
	rm -rf /usr/bin/distributor
	cp $(BUILD_TARGET) /usr/bin/distributor
Here's what I've got so far in my CMakeLists.txt (it's not much, I know):

Code:
cmake_minimum_required (VERSION 2.6)

# This is the main CMake build file for Distributor
project (Distributor)

# Add the source directory
add_subdirectory (source)

# Generate an executable from called Distributor from main.cpp
add_executable (build/node.o source/node.cpp)
add_executable (build/Distributor source/main.cpp)
I don't even know if I'm on the right way of adding executables..

I also wonder if I can integrate another CMakeLists.txt (from third party source code (cppdb)) into the project's CMakeLists.txt..
Reply With Quote
Reply

Tags
cmake, cmakeliststxt, makefile, making

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Could someone help with making this look? lfc22 Fedora Focus 7 4th May 2010 09:17 AM
Can't log in after making changes. phoebetor Using Fedora 5 21st February 2009 12:03 PM
making my own rpm ispanico Using Fedora 6 21st October 2007 02:33 PM
RPM making ihavenoname Fedora Focus 10 17th April 2007 01:52 AM
Making a DVD siavoshkc Installation and Live Media 2 30th August 2006 09:38 PM


Current GMT-time: 07:47 (Tuesday, 21-05-2013)

TopSubscribe to XML RSS for all Threads in all ForumsFedoraForumDotOrg Archive
logo

All trademarks, and forum posts in this site are property of their respective owner(s).
FedoraForum.org is privately owned and is not directly sponsored by the Fedora Project or Red Hat, Inc.

Privacy Policy | Term of Use | Posting Guidelines | Archive | Contact Us | Founding Members

Powered by vBulletin® Copyright ©2000 - 2012, vBulletin Solutions, Inc.

FedoraForum is Powered by RedHat