2011-02-11 7 views
9

はのは、私は、擬似標準的なディレクトリレイアウトCMakeの

helloworld/ 
    src/ 
    main.c 
    say.c 
    say-helper.c 
    include/ 
    say.h 
    say-helper.h 
    build/ 

cd ~/helloworld/build 
cmake .. 
make 

を実行した後に、私は次のことを期待すると、単純なハロープロジェクトがあるとしましょう

helloworld/ 
    build/lib/ 
    libsay.a 
    libsay.so 
    libsay.so.1.0.0 
    tmp/obj/ 
    main.o 
    say.o 
    build/bin/ 
    hello 

make install後、私は

を期待します
/usr/local/lib/ 
    libsay.a 
    libsay.so 
    libsay.so.1.0.0 
/usr/local/bin/ 
    hello 

この設定では、CMakeLists.txtはどのように見えますか?

私は例を探していますが、ライブラリと実行可能ファイルを追加する方法を示した唯一のものは動作しませんでした。

答えて

8

基本的には、プロジェクトを説明するためのコマンド:

INCLUDE_DIRECTORIES(include) 
ADD_LIBRARY(say src/say.c src/say-helper.c) 

ADD_EXECUTABLE(hello src/main.c) 
TARGET_LINK_LIBRARIES(hello say) 

これは、LIBSとビルドディレクトリにある実行可能ファイルを配置するためであるを入れて、あなたのCMakeLists.txtであること:

SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) 
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 
SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 

のためにあなたをインストールあなたのCMakeLists.txtに

install(TARGETS say hello 
      RUNTIME DESTINATION bin 
      LIBRARY DESTINATION lib 
      ARCHIVE DESTINATION lib) 

を指定し、CMAKE_INSTALL_PREFIXをご自分の/ usr/localに設定してください設定。

静的ライブラリと動的ライブラリを同じ名前で同時にビルドできるかどうかはわかりませんが、そして、私はどのように特定の場所にobjファイルを置くCMakeに伝えるかわかりません。