Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

分割コンパイル

hojo.hpp

int hello();

hojo.cpp

#include "hojo.hpp"

int hello() {
    return 1000;
}

hello.cpp

#include <iostream>
#include "hojo.hpp"

using namespace std;

int main(){
  cout << "Hello world." << endl;
  int x = hello();
  cout << x << endl;
  return 0;
}

というファイルをコンパイルしたいとする。 次のようなMakefileを作る。

Makefile

objs = hello.o hojo.o

CC = clang++

hello: $(objs)
    $(CC)  -o hello $(objs)

hello.o:hello.cpp
    $(CC) -c -o hello.o hello.cpp
hojo.o:hojo.cpp
    $(CC) -c -o hojo.o hojo.cpp

clean:
    rm -f $(objs)

これでmakeすればビルドできる。

CMakeで同様の事をする場合

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(hello)
add_executable(hello hello.cpp hojo.cpp)

を作り、

mkdir build
cd build
cmake ..
make

でビルドできる。

そのご 他のフォルダをインクルードした

message("hoge")
cmake_minimum_required(VERSION 3.1)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

project(hello)
include_directories(/Users/hoge/RxCpp-4.0.0/Rx/v2/src)
# set(CMAKE_MODULE_PATH "usr/local/rxcpp" ${CMAKE_MODULE_PATH})
message("INCLUDE_DIRECTORIES ${INCLUDE_DIRECTORIES}")
message("CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}")
# find_package(rxcpp)
add_executable(hello hello.cpp hojo.cpp)