2

generate_export_header関数を使用しようとしています。私のライブラリのソースコードはsrcフォルダにあるので、CMakeはにエクスポートヘッダーを生成しsrc/mylib_export.hます。このエクスポートヘッダーincludeを使用するには、実装コードで使用するためにライブラリのフォルダーにコピーするだけですか?これが私が使用しているCMakeコードのスニペットです:

ADD_LIBRARY(${PROJECT_NAME} ${LIB_TYPE} ${SOURCES})
GENERATE_EXPORT_HEADER(${PROJECT_NAME})

FILE(COPY 
    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h 
    DESTINATION 
    ${PROJECT_SOURCE_DIR}/include
)

これを行うためのより多くのCMakeの方法はありますか?

4

2 に答える 2

5

CMakeでこれを行うときは、通常、バイナリフォルダーをinclude_directoriesに追加し、エクスポートヘッダーをまったくコピーしません。

このように、ソースツリーには生成された部分が含まれていないため、ソース管理での使用が簡単になります。また、通常、ソースツリーごとに複数のビルドツリーを使用してプロジェクトをビルドし、複数のコンパイラでビルドしたり、ビルドしたりできるようにします。異なる設定を使用するか、同じコンパイラで32ビット/64ビットのビルドツリーを分離します。

于 2012-10-08T15:22:46.980 に答える
0

export.h私はソースフォルダにコピーして.gitignore、アプリケーション固有の場合と同じようにに追加することを好みますconfig.h

generate_export_header (
  ...
  EXPORT_FILE_NAME "${CMAKE_CURRENT_SOURCE_DIR}/export.h"
)
configure_file ("config.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/config.h")

その理由は、clangコードの強調表示とフォーマットです。どのようexport.hに表示されるかは問題ではなく(これらのファイルはビルド前に更新されます)、空のフォルダーconfig.hを使用してテキストエディターで適切に強調表示およびフォーマットされたコードのみが必要です。build

于 2021-03-13T22:21:46.573 に答える