c++ - How do I share headers and libraries in subdirectory by cmake? -


i want use headers , libs common libraries app1 , app2. project tree below. image/ , math/ library directories used app1 , app2. in case, should set same settings both cmakelists.txt under app1 , app2? of course know works, there smarter ways set common libraries?

|-- cmakelists.txt |-- app1 |   |-- cmakelists.txt |   `-- main.cc |-- app2 |   |-- cmakelists.txt |   `-- main.cc |-- image |   |-- cmakelists.txt |   |-- include |   |   `-- image_func.h |   `-- src |       `-- image_func.cc `-- math     |-- cmakelists.txt     |-- include     |   `-- math_util.h     `-- src         `-- math_util.cc 

roots cmakelists.txt below. possible set math , image parameters app1 , app2? actual project has many applications uses multiple libraries.

 cmake_minimum_required(version 2.8)   add_subdirectory("./image")  add_subdirectory("./math")  add_subdirectory("./app1")  add_subdirectory("./app2") 

with newer versions oft cmake (since 2.8.12) can use target_link_libraries , related functions manage dependencies. specifying public includes , libraries applied targets using library. reduce duplication minimum.

for math , image need specify respective include directory used , libraries might require.

math/cmakelists.txt

add_library(math ...) target_include_directories(math public    include ...) target_link_libraries(math public ...) 

image/cmakelists.txt

add_library(image ...) target_include_directories(image public include ...) target_link_libraries(image public ...) 

app1/cmakelists.txt

add_executabke(app1 ...) target_link_libraries(app1 public image math) 

app2/cmakelists.txt

add_executabke(app2 ...) target_link_libraries(app2 public image math) 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -