古いプロジェクトがあり、古いautotoolsではなくcMakeを使いたいと思います。cmake:include /とlib /ディレクトリをautotoolとしてインストールする方法
古いプログラムは、makeの後に.libsという隠しフォルダの中にlibtest.a、libtest.la、libtest.so.1.0.0などを作成し、make installと入力するとすべてのライブラリをターゲットフォルダ$ TEST_ROOT/lib(環境変数)にイントールします。また、すべての.hファイルを$ TEST_ROOT/includeフォルダにインストールします。
Makefile.amで:configure.acで
source_list=test1.cpp test2.cpp
include_HEADERS=test1.h test2.h
AM_LDFLAGS="-pthread -lm -lrt"
lib_LTLIBRARIES=libtest.la
libtest_la_SOURCES=$(source_list)
libtest_la_LDFLAGS=$(AM_LDFLAGS) -static-libgcc
、私は上記のコードを作るだろう、なぜ
if test -n "${TEST_ROOT}"; then
ac_default_prefix=${TEST_ROOT}
includedir=${ac_default_prefix}/include
fi
は、率直に言って、私は本当に理解していない、1つの該当する行を参照してください。 a、.la、.soなどのライブラリをまとめて、対応するフォルダにインストールします。おそらくautotoolsは "ac_default_prefix"と "includeddir"を認識できますか?
とにかく、私はcmakeで同じことをしたい、以下は私の試みですが、完全な解決策ではありません。
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/.libs)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR}/.libs)
set(CMAKE_CXX_FLAGS "-O3 -Wall")
set(CMAKE_EXE_LINKER_FLAGS "-pthread -lm -lrt")
file(GLOB SOURCES "*.cpp")
add_library(test STATIC ${SOURCES})
上記のコードではなく、ビルドフォルダ内.LIBSフォルダに(CMAKE_RUNTIME_OUTPUT_DIRECTORYなどが動作しないことを意味する)、buildフォルダにlibtest.aをコンパイルします。
第二に、それだけでlibtest.aを構築し、何libtest.laが存在しない、無libtest.so.1.0.0など
第三に、私はまだ、自動のような仕事をインストールしてみましょうどのように確認していませんツール。ターゲットのインクルードディレクトリとターゲットのlibディレクトリを設定して、すべての.hファイルと.so、.a、.laファイルをターゲットディレクトリにインストールするように設定できますか?
助けてください。
ありがとうございました。
CMakeにはインストールのための特別なコマンド - [install()](https:// cmake)があります。org/cmake/help/v3.0/command/install.html)を参照してください。それについてのドキュメンテーションをチェックしてください、おそらく事は明らかになります。変数 'CMAKE _ * _ OUTPUT_DIRECTORY'は、それぞれがライブラリ/実行可能ファイルの特定の型にのみ影響します。静的ライブラリは[CMAKE_ARCHIVE_OUTPUT_DIRECTORY](https://cmake.org/cmake/help/v3.0/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY.html)の影響を受けます。また、STATICライブラリをビルドする際に、なぜ '.la'と' .so'がビルドされることを期待していますか?現在のところ、あなたの質問には多すぎる副質問があり、そのうちの1つに集中しようとします。 – Tsyvarev
私は、あまりにも多くの副請求主張に完全に同意します。 – steveire