いつかは避けられないソースファイルの適切な分割や、ライブラリの作成。
単発のプログラム作成とライブラリ作成におけるソースファイルのCMakeでの指定では使用するディレクティブが違います。
C++専門ではないが実務で書く必要が出てきた僕みたいな人のための記事です。
複数ソースファイルで単一のプログラムを作成する時
学びはじめは、ソースファイル分割しながらビルドするときはadd_executable
ディレクティブを使ってました。この程度だとCMakeあってもなくても労力は変わりませんね。
add_executable(ProjectName main.cpp foo.cpp)
複数ソースファイルでライブラリを作成する時
でも、ライブラリ作成するとなるとadd_executable
は使えません。
ソースファイル分割しながら、CMakeでライブラリを作成するときはadd_library
を代わりに使いましょう。
set BRABRA_FILES{
main.cpp,
bar.cpp,
bar.hpp
}
add_library(ProjectName SHARED ${BRABRA_FILES})
ライブラリを作成する必要が生じたぐらいのタイミングから、リンクやソースファイルの指定がCMakeなしでは面倒になってきます。これらをCMakeで効率的に指定することは、実務では避けられません。
g++にオブション渡しまくって解決するのは時間がもったいないです。
CMakeに感謝し、巨人の肩に乗りましょう!