c++ - How to link an exe project to the classes in another exe project -


suppose want unit testing on classes in executable don't want refactor them out lib can add lib using target_link_libraries( target library ) in cmake.

how give test class access other classes?

1) build test project source files other project? thing

  include_directories(${otherexeprojectdir})    set( source_files       main.cpp      tests.h      tests.cpp      ${otherexeprojectdir}/otherclass1.h      ${otherexeprojectdir}/otherclass2.h    ) 

2) link test project obj files other project? sort of add_library( otherclass.obj ) craziness?

3)

if main executable source locations simple or flat, work:

cmake_minimum_required(version 3.9) project(tests)  # main executable source location properties get_target_property(exe_sources exe sources) get_target_property(exe_source_dir exe source_dir)  # remove main entry point file list(remove_item exe_sources main.cpp)  # add test sources add_executable(test1 test1.cpp)  # add exe sources test (assumes sources relative paths) foreach(src in lists exe_sources)   target_sources(test1 private "${exe_source_dir}/${src}") endforeach()  # add exe include directories test target_include_directories(test1 private    ${exe_source_dir}   $<target_property:exe,include_directories>) 

otherwise general solution is, unfortunately, rely on external information, e.g. top level source file locations or adding own source properties main executable target.


Comments

Popular posts from this blog

Ansible warning on jinja2 braces on when -

Parsing a protocol message from Go by Java -

html - How to custom Bootstrap grid height? -