วิธีสร้างหน้าแนะนำด้วย Doxygen


103

ฉันทำเอกสารสำหรับ SDK ของฉันโดยใช้ Doxygen มันมีรายการไฟล์เนมสเปซคลาสประเภท ฯลฯ - ทุกอย่างที่ฉันวางไว้เป็นความคิดเห็นของ Doxygen ในโค้ด ตอนนี้ฉันต้องการเขียนข้อมูลทั่วไปเกี่ยวกับ SDK (ชนิดของบทนำ) ซึ่งไม่เกี่ยวข้องโดยตรงกับองค์ประกอบโค้ดใด ๆ ฉันต้องการวางบทนำนี้ในหน้าเริ่มต้นของเอกสาร ฉันจะทำเช่นนี้ได้อย่างไร?


คำตอบ:


95

ดูmainpageคำสั่ง

นอกจากนี้มีลักษณะเป็นคำตอบนี้ไปยังหัวข้ออื่น: วิธีการรวมไฟล์ที่กำหนดเองใน Doxygen มันระบุว่ามีสามส่วนขยายที่ Doxygen เรียนเป็นไฟล์เอกสารเพิ่มเติม: .dox, และ.txt .docไฟล์ที่มีนามสกุลเหล่านี้จะไม่ปรากฏในดัชนีไฟล์ แต่สามารถใช้เพื่อรวมข้อมูลเพิ่มเติมลงในเอกสารขั้นสุดท้ายของคุณซึ่งมีประโยชน์มากสำหรับเอกสารประกอบที่จำเป็น แต่ไม่เหมาะสมที่จะรวมไว้ในซอร์สโค้ดของคุณ (เช่นคำถามที่พบบ่อย)

ดังนั้นฉันขอแนะนำให้มีไฟล์mainpage.dox(หรือชื่อคล้ายกัน) ในไดเรกทอรีโครงการของคุณเพื่อแนะนำ SDK ให้คุณ โปรดทราบว่าภายในไฟล์นี้คุณต้องใส่บล็อกความคิดเห็นสไตล์ C / C ++ อย่างน้อยหนึ่งบล็อก


3
อย่างน้อยไฟล์ markdown ( .mdและ.markdown) ถือเป็นไฟล์เอกสารเพิ่มเติมเช่นกัน ฉันชอบพวกเขามากกว่า.doxเพราะพวกเขาไม่ต้องการความคิดเห็นเกี่ยวกับโค้ดโดยรอบและสามารถแก้ไขได้อย่างดีด้วยตัวแก้ไข markdown - โดยไม่มีข้อเสีย
Pascal

56

ในฐานะของ v1.8.8 USE_MDFILE_AS_MAINPAGEนอกจากนี้ยังมีตัวเลือก เพื่อให้แน่ใจว่าการเพิ่มไฟล์ดัชนีของคุณเช่นREADME.mdไปINPUTและตั้งเป็นค่าของตัวเลือกนี้:

INPUT += README.md
USE_MDFILE_AS_MAINPAGE = README.md

4
นอกจากนี้หากคุณจะใช้ README.md เป็นหน้าหลักตรวจสอบให้แน่ใจว่ามาก่อนในรายการ INPUT เมื่อมีผู้สมัครหน้าหลักหลายคนจะมีการเลือกครั้งแรกที่พบขณะแยกวิเคราะห์หรือมากกว่านั้น
Lester Peabody

2
อย่างไรก็ตามใน doxygen gui คุณจะต้องรวมไฟล์. md ของคุณภายใต้ expert> input> input เท่านั้น
Adrian Lopez

USE_MDFILE_AS_MAINPAGEไม่ได้ผลสำหรับฉัน ตามเอกสารคุณต้องรวมไว้{#mainpage}หลังชื่อของเอกสาร markdown สิ่งนี้ได้ผล
samvv

2
@samvv ฉันไม่ได้เพิ่มอะไรพิเศษในเอกสาร markdown ฉันเพิ่งใช้ตอนINPUT = README.mdนั้นINPUT += src(เพื่อทำตามคำแนะนำของ @ Lester) USE_MDFILE_AS_MAINPAGE = README.mdและมันก็ใช้งานได้เหมือนมีเสน่ห์ เวอร์ชัน: $ doxygen --versionคืนให้1.8.11ฉัน
Xavi Montero

1
ใน Doxygen 1.8.2 สิ่งเดียวที่ใช้งานได้คือการเพิ่ม\mainpageภายใน (สามารถทำได้ในความคิดเห็น (ดูลิงก์นี้เกี่ยวกับความคิดเห็นใน MarkDown) สิ่งนี้ยังคงสร้างพื้นที่หน้าที่เกี่ยวข้องโดยมีตัวยึด (ว่างเปล่า) ซึ่งน่ารำคาญ แต่ อย่างน้อยฉันก็มีหน้าหลัก
Evgen

55

โปรดทราบว่าด้วย Doxygen รุ่น 1.8.0 คุณยังสามารถเพิ่มหน้าที่จัดรูปแบบ Markdown ได้ เพื่อให้ใช้งานได้คุณต้องสร้างเพจที่มี a .mdหรือ.markdownส่วนขยายและเพิ่มสิ่งต่อไปนี้ในไฟล์ config:

INPUT += your_page.md
FILE_PATTERNS += *.md *.markdown

ดูรายละเอียดได้ที่http://www.doxygen.nl/manual/markdown.html#md_page_header


6
ที่จริงแล้วเวอร์ชัน 1.8.0 ปัจจุบันรองรับ markdown แต่ไม่ถือว่าเป็นเอกสาร ดังนั้นคุณจะจบลงด้วยคลาส markdown ที่ระบุไว้ในส่วนไฟล์และไดเรกทอรี วิธีแก้ไขคือเพิ่มdox=mdเป็นEXTENSION_MAPPINGและเปลี่ยนชื่อส่วนขยาย markdown ของคุณเป็น.doxดังนั้นการกำหนดค่าจะมีลักษณะดังนี้:INPUT += your_page.dox EXTENSION_MAPPING += dox=md
ต้านพิษ

6
จุดดี. ฉันจะแก้ไขสิ่งนี้ให้. md และ. markdown ได้รับการปฏิบัติคล้ายกับ. dox
doxygen

4
น่าเสียดายที่สิ่งนี้จะจบลงในหน้าที่เกี่ยวข้องไม่ใช่หน้าหลัก
Evgen

7

ไวยากรณ์ต่อไปนี้อาจช่วยในการเพิ่มหน้าหลักและหน้าย่อยที่เกี่ยวข้องสำหรับ doxygen:

/*! \mainpage Drawing Shapes
 *
 * This project helps user to draw shapes.
 * Currently two types of shapes can be drawn:
 * - \subpage drawingRectanglePage "How to draw rectangle?"
 *
 * - \subpage drawingCirclePage "How to draw circle?"
 *
 */ 

/*! \page drawingRectanglePage How to draw rectangle?
 *
 * Lorem ipsum dolor sit amet
 *
 */

/*! \page drawingCirclePage How to draw circle?
 *
 * This page is about how to draw a circle.
 * Following sections describe circle:
 * - \ref groupCircleDefinition "Definition of Circle"
 * - \ref groupCircleClass "Circle Class"
 */

การสร้างกลุ่มดังต่อไปนี้ยังช่วยในการออกแบบเพจ:

/** \defgroup groupCircleDefinition Circle Definition
 * A circle is a simple shape in Euclidean geometry.
 * It is the set of all points in a plane that are at a given distance from a given point, the centre;
 * equivalently it is the curve traced out by a point that moves so that its distance from a given point is constant.
 * The distance between any of the points and the centre is called the radius.
 */

ตัวอย่างสามารถพบได้ที่นี่


@FelixSFD ขอบคุณสำหรับคำติชม ฉันอัปเดตคำตอบตามคำตอบของคุณ
Birol Capa

5

เพิ่มไฟล์ใด ๆ ในเอกสารประกอบซึ่งจะรวมเนื้อหาของคุณเช่นtoc.h :

@ mainpage Manual SDK
<hr/>
@ section pageTOC Content
  -# @ref Description
  -# @ref License
  -# @ref Item
...

และในDoxyfile:

INPUT = toc.h \

ตัวอย่าง (ในรัสเซีย):


1
ตอนนี้การเชื่อมโยงทางเทคโนโลยีขนาดใหญ่ได้ตายไปแล้ว
Ben Fulton

3

ฉันลองทุกอย่างข้างต้นด้วย v 1.8.13 แล้วก็ไม่เกิดประโยชน์ สิ่งที่ใช้ได้ผลสำหรับฉัน (บน macOS) คือการใช้ doxywizard-> แท็กผู้เชี่ยวชาญเพื่อเติมเต็มการUSE_MD_FILE_AS_MAINPAGEตั้งค่า

ได้ทำการเปลี่ยนแปลงต่อไปนี้กับ Doxyfile ของฉัน:

USE_MDFILE_AS_MAINPAGE = ../README.md
...
INPUT                  = ../README.md \
                         ../sdk/include \
                         ../sdk/src

สังเกตการสิ้นสุดบรรทัดสำหรับINPUTฉันเพิ่งใช้ช่องว่างเป็นตัวคั่นตามที่ระบุไว้ในเอกสารประกอบ AFAICT นี่เป็นการเปลี่ยนแปลงเพียงอย่างเดียวระหว่าง Doxyfile เวอร์ชันที่ใช้งานไม่ได้และใช้งานได้


1
ชี้แจง - doxywizard คือส่วนหน้าของ GUI ที่ติดตั้งบน macOS
VorpalSword

ฉันต้องเพิ่ม \ mainpage เพื่อให้ README.md ได้รับการยอมรับว่าเป็นหน้าหลัก
JBaczuk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.