2013-05-29 41 views
9

Tài liệu Doxygen nói rằng \ ingroup có thể được sử dụng để thêm một thực thể để nhiều nhóm:Doxygen: Làm thế nào để bao gồm một phần tử trong nhiều nhóm

\ingroup (<groupname> [<groupname> <groupname>]) 

Vấn đề là tôi đã thử nó và Doxygen thêm entitiy đến nhóm cuối cùng trong danh sách nhóm. Một cái gì đó như

/** \ingroup A B 
* ... 
*/ 

thêm phần tử vào mô-đun A, chứ không phải B. Bất kỳ ai biết tại sao và cách giải quyết?

Tôi đã thử với phiên bản Doxygen 1.7.6.1 và 1.8.1.2.

Cảm ơn sự giúp đỡ của bạn.

EDIT: Tôi nhận ra rằng doxygen kết quả đầu ra một cảnh báo nói rằng:

Member X found in multiple @ingroup groups! The member will be put in group B, and not in group A 

Dường như với tôi rằng đây là mâu thuẫn với tài liệu.

ĐÁP: Tôi tự trả lời. Tôi đã cố thêm các hàm vào nhiều nhóm, nhưng tài liệu nói "Lưu ý rằng các thực thể phức hợp (như lớp, tệp và không gian tên) có thể được đưa vào nhiều nhóm, nhưng thành viên (như biến, hàm, typedefs và enums) chỉ có thể là thành viên của một nhóm ".

Trả lời

7

Bạn thường (đối với các mục được phép, cho phép nói một tệp) chỉ cần viết một nhóm với nhóm bội số. Hãy để tôi chỉ cho, cho đầy đủ, một mẫu tôi sử dụng:

/** 
* \file 
* \ingroup GrpTest GrpLicense 
* \brief Here your brief explanation 
* \details And you put here a more detailed explanation to the 
* contents of the file. 
* \version 1.0 
* \date 2014-09-27 
* \author Dr Beco 
* \par Webpage 
* <<http://www.program.pg/>> 
* \copyright (c) 2014 GNU GPL v3 
* \note This program is free software: you can redistribute it 
* and/or modify it under the terms of the 
* GNU General Public License as published by 
* the Free Software Foundation version 3 of the License. 
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details. 
* You should have received a copy of the GNU General Public License 
* along with this program. 
* If not, write to the Free Software Foundation, Inc., 
* 59 Temple Place - Suite 330, Boston, MA. 02111-1307, USA. 
* Or read it online at <<http://www.gnu.org/licenses/>>. 
* 
*/ 

Bây giờ, từ Doxygen Documentation, đặc biệt các trang liên kết ở đây, bạn đọc:

Note that compound entities (like classes, files and namespaces) 
can be put into multiple groups, 
but members (like variable, functions, typedefs and enums) 
can only be a member of one group 

Các tài liệu cũng giải thích lý do tại sao:

(this restriction is in place to avoid ambiguous linking 
targets in case a member is not documented in the context 
of its class, namespace or file, but only visible as part of a group). 

Vì vậy, trong ngắn hạn, rất tiếc bạn không thể thêm hàm (hoặc tất cả các loại thực thể, như bạn đã không chỉ định, cho vấn đề đó) vào nhóm bội số.

Tôi hy vọng liên kết này sẽ giúp bạn có thêm câu hỏi mà bạn có thể có.

1

Sử dụng

/** \ingroup A B 
* ... 
*/ 

sẽ thêm mục để nhóm AB chỉ khi chúng được định nghĩa ở nơi khác. Nếu một nhóm không được xác định, nó sẽ không được xác định chỉ vì nó được sử dụng trong một lệnh \ingroup.

Bạn sẽ có thể nhận được các mục trong nhóm B bằng cách sử dụng

/** \defgroup B 
* @{ 
* @} 
*/ 
/** \ingroup A B 
* ... 
*/ 
Các vấn đề liên quan