Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: CmakeBojovnik 31. 08. 2017, 10:26:15
-
Ahoj, bojujem trocha s Cmake ohladne importu/include COMPILE_DEFINITIONS a potreboval by som poradit...
Mam prvy CmakeList A/CmakeList.txt ktory obsahuje
<root>/A/CmakeList.txt
add_definitions(-DDEF_AA)
add_definitions(-DDEF_AB)
add_definitions(-DDEF_AC)
...
add_library(TargetA STATIC ... )
vygeneruje mi to libTargetA.a , coz je to co chcem
A teraz druhy CmakeList, kde mam
<root>/B/CmakeList.txt
add_definitions(-DDEF_BA)
add_definitions(-DDEF_BB)
add_definitions(-DDEF_BC)
...
add_executable(TargetB ... )
target_link_libraries(TargetB ... TargetA)
Target A buildim zvlast, pripadne do targat B dam execute_process, ale o co sa mi jedna.
Pri kompilacii TargetB potrebujem zahrnut COMPILE_DEFINITIONS z TargetA. Zial, nepodarilo sa mi dohladat ako, cez include/get_properies sa mi to nedari, prosim o nasmerovanie, pripadne help
Diky,
Bojovnik
-
Tohle by mělo fungovat, ale nezkoušel jsem:
target_compile_definitions(TargetB PUBLIC $<TARGET_PROPERTY:TargetA,COMPILE_DEFINITIONS>)
-
V root/A/Cmakelist.txt:
add_library(TargetA STATIC ...)
target_compile_definition(TargetA PUBLIC DEF_AA DEF_AB DEF_AC)
V root/B/Cmakelist.txt:
add_executable(TargetB)
target_compile_definition(TargetB PRIVATE DEF_BA DEF_BB DEF_BC)
target_link_libraries(TargetB PRIVATE TargetA)
https://cmake.org/cmake/help/v3.9/command/target_compile_definitions.html
https://cmake.org/cmake/help/v3.9/command/target_link_libraries.html
-
preklep: target_compile_definitionS
dolezite je klucove slovo PUBLIC v TargetA