Tôi đang sử dụng Waf để xây dựng một dự án C và gcov
để có một số mã vùng thử nghiệm. Tuy nhiên, WAF gọi gcc
trong một cách mà sản xuất foo.c.1.o
từ nguồn tập tin foo.c
gây bối rối gcov
khi tìm kiếm các tập tin được tạo ra:Làm cách nào để ngăn Waf đổi tên các tệp đối tượng?
$ gcov foo.c
$ foo.gcno:cannot open graph file
May mắn thay, gcov
có quyền lựa chọn -o
mà người ta có thể xác định các đối tượng tập tin tương ứng . Tuy nhiên, điều này là không thuận tiện và thực hiện lcov
vẫn không thành công. Do đó, câu hỏi của tôi là:
- Tại sao Waf đổi tên tệp đối tượng?
- Cách hoạt động này có thể bị vô hiệu hóa hoặc ...
- Làm cách nào để
gcov
/lcov
khắc phục sự cố này?
Điều này thực sự phức tạp khi làm việc bất chấp câu trả lời rõ ràng. Rõ ràng có một lỗi trong bản sửa đổi chính của gcovr khiến nó đọc từng ký tự của đối số --root như một đường dẫn riêng biệt trong một danh sách. Vì vậy, cho rằng $ (pwd) bắt đầu với '/' nó bắt đầu bằng cách tìm kiếm toàn bộ hệ thống tập tin của bạn cho các tập tin .gcno và treo cứng. Tôi thay đổi dòng 1828, nơi nó gọi get_datafiles để vượt qua "[options.root]" thay vào đó và làm cho nó hoạt động. – flodin
@flodin Lỗi "[options.root]" được sửa trong gcovr 3.2. –