อะไรคือความแตกต่างระหว่าง "รวมไดเรกทอรี" และ "รวมไดเรกทอรีเพิ่มเติม"


96

ในคุณสมบัติคอนฟิกูเรชันของโครงการของฉันภายใต้ "ไดเรกทอรี VC ++" มีรายการ "รวมไดเรกทอรี" แต่ภายใต้ตัวเลือก "C / C ++" มีรายการอื่นที่เรียกว่า "Additional Include Directories" สิ่งเดียวกันเกิดขึ้นกับไดเรกทอรีไลบรารี

สองรายการนี้แตกต่างกันอย่างไร?

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

คำตอบ:


50

นี่คือความอึดอัดที่ถูกนำมาใช้ใน VS2010 การตั้งค่า VC ++ Directories เคยอยู่ใน Tools + Options, Projects and Solutions, VC ++ Directories การตั้งค่าส่วนกลางที่ใช้กับทุกโครงการที่สร้างขึ้นในเครื่อง ยังคงมีอยู่ แต่ชี้ให้เห็นว่าตอนนี้คุณควรเปลี่ยนในการตั้งค่าโครงการของคุณ ผลข้างเคียงของการยกเครื่อง build engine ใน VS2010 ทำให้การสร้างด้วย msbuild การลบการตั้งค่าต่อโปรเจ็กต์อาจเป็นเหตุผล แต่จะทำให้โปรเจ็กต์ที่มีอยู่มากเกินไป

ดังนั้นจึงควรใช้การตั้งค่า VC ++ Directories เป็นค่าเริ่มต้นของเครื่อง โปรแกรมติดตั้ง VS จะตั้งค่าล่วงหน้าโดยอัตโนมัติ Tinker กับมันเฉพาะในกรณีที่คุณต้องการลำดับการค้นหาไดเร็กทอรีที่ผิดปกติทำให้ตำแหน่งที่กำหนดเองเป็นอันดับสุดท้าย ผิดปกติมากที่จะทำเช่นนั้น

มันทำงานอย่างไร และมันก็ถูกเอาเปรียบในที่สุด เพิ่มขีดความสามารถของการตั้งค่า Platform Toolset ใน VS2012 ขึ้นไป คอมไพเลอร์ที่แตกต่างกันตัวเชื่อมโยงที่แตกต่างกันไดเร็กทอรี #include ต่างกันเส้นทางการค้นหาตัวเชื่อมโยงที่แตกต่างกัน แก้ไขด้วยการตั้งค่าเดียวก็ดี


3
อืม ... มันเป็นความจริงที่ตัวเลือก gloabl จะถูกบันทึกไว้ภายใต้สิ่งนี้ - แต่นี่คือแผ่นคุณสมบัติMicrosoft.Cpp.Win32.userและมีเพียงเท่านี้ หากคุณแก้ไขรายการ "VC ++ Directories" เมื่อมีโปรเจ็กต์ที่ใช้งานอยู่หรือแผ่นคุณสมบัติอื่นการเปลี่ยนแปลงจะยังคงอยู่ใน.vcxprojไฟล์หรือใน.propsไฟล์ตามลำดับและจะไม่เป็นแบบโกลบอลหรือแบบทั้งผู้ใช้เลย
Martin Ba

26

รวมไดเรกทอรีที่INCLUDEสอดคล้องกับตัวแปรสภาพแวดล้อม

การตั้งค่าไดเร็กทอรีที่แสดงในหน้าต่างคือไดเร็กทอรีที่ Visual Studio จะค้นหารวมไฟล์ที่อ้างถึงในไฟล์ซอร์สโค้ดของคุณ สอดคล้องกับตัวแปรสภาพแวดล้อม INCLUDE

แม้ว่าไดเร็กทอรีรวมเพิ่มเติมจะถูกส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่ง (เช่น\Iตัวเลือก)


21

การกำหนดค่ารวมถึงรูปแบบ

VC ++ ไดเร็กทอรี: รวมไดเร็กทอรี

  • ค่านี้สืบทอดมาจากตัวแปรสภาพแวดล้อมของINCLUDE Windowsซึ่งกำหนดไว้ภายนอกVisual Studio
    • ตัวแปรสภาพแวดล้อมอาจเป็น: ส่วนกลางไปยังคอมพิวเตอร์หรือมีขอบเขตระดับผู้ใช้
    • INCLUDEและLIBตัวแปรสภาพแวดล้อมที่ถูกสร้างขึ้นเมื่อMicrosoft Windows SDKการติดตั้งกับVisual Studio

C / C ++: เพิ่มเติมรวมถึงไดเรกทอรี

  • เป็นการตั้งค่าระดับโครงการ ... คุณจะต้องกำหนดค่านี้สำหรับทุกโครงการในโซลูชันของคุณ
  • ค่านี้สามารถคงอยู่ในการควบคุมแหล่งที่มา

หมายเหตุเพิ่มเติม

ฉันควรใช้ตัวไหน?

การตัดสินใจใช้ไดเรกทอรีรวมหรือไดเรกทอรีที่รวมเพิ่มเติมจะขึ้นอยู่กับกระบวนการพัฒนาขององค์กรของคุณ ในความคิดของฉันมันสำคัญกว่า:

  • ที่คุณสามารถสร้างสภาพแวดล้อมการพัฒนาใหม่ได้อย่างสม่ำเสมอและเชื่อถือได้ (คิดว่า: การส่งมอบซอร์สโค้ดให้กับนักพัฒนารายอื่น)
  • สำหรับนักพัฒนาภายในองค์กรใช้แนวทางที่สอดคล้องกัน

หมายเหตุเกี่ยวกับมาโคร

  • มาโครคอนฟิกูเรชันโปรเจ็กต์ C ++ (เพื่อไม่ให้สับสนกับ C ++ pre-processor #definedirective) สืบทอดเนื้อหาจากแหล่งที่มาที่แตกต่างกัน มาโครเช่น ...
    • $(Include)สืบทอดค่าจากตัวแปรสภาพแวดล้อมของWindows
    • $(OutDir)สืบทอดค่าจากVisual Studio IDE

ข้อมูลอ้างอิง

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