首页 > 解决方案 > CMake 搜索首先包含系统目录中的文件

问题描述

我有一个使用 CMake 作为构建系统的库。它是为 ubuntu 构建的,但不是为 windows构建的。出现此问题是因为在 Windows 上它首先在系统目录中搜索“Math.h”,而不是在项目的“包含”目录中搜索。我试图用'Math2'重命名所有'Math'文件和类,效果很好。但我不想重命名类和文件。我需要做什么?

CMakeLists.txt:

cmake_minimum_required (VERSION 3.10)

project (Bint
    VERSION "0.1.0"
    DESCRIPTION "Bint is an arbitrary-precision arithmetic library."
    LANGUAGES CXX
)

enable_testing()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
if(MSVC)
    #add_compile_options(/Wall)
else()
    add_compile_options(-Wall -Wextra -pedantic)
endif()

include_directories(BEFORE ./include)

set(BINT_SRC src/Bint.cpp)
set(MATH_SRC src/Math.cpp)
add_library(shareobjects OBJECT ${BINT_SRC} ${MATH_SRC})

add_executable(test-main-fast tests/main.cpp ${BINT_SRC} ${MATH_SRC})
set_target_properties(test-main-fast PROPERTIES COMPILE_FLAGS -Ofast)
add_test(NAME tst-main-fast COMMAND ./test-main-fast)

aux_source_directory(tests TESTS)
foreach(tstfile ${TESTS})
    string(REGEX MATCH "\/(.*)\\.[^.]*$" dummy ${tstfile})
    add_executable(test-${CMAKE_MATCH_1} ${tstfile} $<TARGET_OBJECTS:shareobjects>)
    add_test(NAME tst-${CMAKE_MATCH_1} COMMAND ./test-${CMAKE_MATCH_1})
endforeach()

add_library(Bint SHARED ${BINT_SRC} ${MATH_SRC})
set_target_properties(test-main-fast PROPERTIES COMPILE_FLAGS -Ofast)

add_library(Bint_static STATIC $<TARGET_OBJECTS:shareobjects>)
set_target_properties(Bint_static PROPERTIES OUTPUT_NAME Bint)

标签: c++windowscmakeinclude

解决方案


推荐阅读