В предыдущем посте написал много слов о том, что такое ObjPlacement и какие ObjPlacement как себя ведут. Похоже, проще один раз показать :)
Итак, пусть у нас есть вот такая файловая структура:
.
├── build.rb
└── demo
├── prj.rb
└── src
└── some_rather_long_path
└── to_source
└── file
└── main.cpp
Где main.cpp -- это классический hello_world:
#include <iostream> int main() { std::cout << "Hello, world" << std::endl; } |
Проектный файл для этого hello_world имеет простейший вид (файл demo/prj.rb):
gem 'Mxx_ru' require 'mxx_ru/cpp' MxxRu::Cpp::exe_target { target 'demo.app' cpp_source 'src/some_rather_long_path/to_source/file/main.cpp' } |
Ну и в build.rb пока ничего интересного нет вообще:
#!/usr/bin/ruby gem 'Mxx_ru', '>= 1.6.12' require 'mxx_ru/cpp' MxxRu::Cpp::composite_target( MxxRu::BUILD_ROOT ) { required_prj 'demo/prj.rb' } |
Запускаем сборку ./build.rb --mxx-cpp-release и получаем следующее содержимое: