【问题标题】:Need to reference a .h in another folder, same project. dont have authority to move files around需要在同一项目的另一个文件夹中引用 .h。无权移动文件
【发布时间】:2023-01-27 18:13:08
【问题描述】:

`\src\notation\view

\src\engraving\libmscore`

对于 Musescore。

我在 \view\noteinputcursor.cpp 中有一个文件,我需要在其中做一些数学运算,但数字需要来自 \libmscore\stringdata.cpp - 我希望我正在使用的光标知道我在做什么,知道如何突出显示它,比如一个宽光标或一个窄光标。

引用它的好方法是什么,它必须适用于世界上任何其他编译它的人,而无需在环境或依赖项中添加内容。每个人的最简单的方法。理想情况下,我之外的任何人(以及那些审查我充满希望的未来代码的人)都不会注意到它。

尝试只是做

#include stringdata.h 但后来意识到这是行不通的,因为它们位于不同的文件夹中,并且编译器仅适用于下游而不适用于上游/侧流/并行流等。

【问题讨论】:

  • 你可以简单地写#include "relative/path/to/your/file"。
  • 更重要的是,任何编译器都会让您设置包含搜索文件的路径。这些是 -I 或 /I(大写 i)选项。在编译器的文档中查找它们。

标签: c++ reference


【解决方案1】:

使用 cmake 来组织你的代码。 cmake 是一个 makefile 生成工具。它生成 makefile,即 MinGW Makefile、Visual Studio 项目等。它使用一个文件来描述项目代码的组织方式,并使链接程序轻松编译和链接您的依赖项。

例如,这是一个项目,我写它是为了学习OpenGL。很容易链接库,即 glfw。

cmake_minimum_required ( VERSION 3.15 )

project ( Freecraft )

set ( PRJ_SRC_LIST )    #all sources in the project
set ( PRJ_LIBRARIES )   #all libraries in the project
set ( PRJ_INCLUDE_DIRS )#all headers in the project

#set ( GLFW "d:/software/GLFW3" )

file ( GLOB_RECURSE root_header_files "${PROJECT_SOURCE_DIR}/src/*.h" "${PROJECT_SOURCE_DIR}/src/*.hpp" )
file ( GLOB_RECURSE root_src_files "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.c" )


set ( GL_INC "${PROJECT_SOURCE_DIR}/include/" )
set ( GLFW_LIB "${PROJECT_SOURCE_DIR}/lib/glfw3.dll" )

list ( APPEND PRJ_INCLUDE_DIRS . )
list ( APPEND PRJ_INCLUDE_DIRS ${GL_INC} )
#list ( APPEND PRJ_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include/glad/" )
#list ( APPEND PRJ_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include/KHR" )

list ( APPEND PRJ_SRC_LIST ${root_src_files} )
list ( APPEND PRJ_LIBRARIES ${GLFW_LIB} )


add_executable ( ${PROJECT_NAME} ${PRJ_SRC_LIST} )

target_include_directories ( ${PROJECT_NAME}
    PRIVATE 
    ${PRJ_INCLUDE_DIRS}
)

target_link_libraries ( ${PROJECT_NAME} 
    PRIVATE 
    ${PRJ_LIBRARIES}
)

前往 cmake.org 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多