c++ - 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)
解决方案
推荐阅读
- python - 使用 dict 调用 .agg 时更改多个函数的名称
- css - CSS移动不是中心
- statistics - 连续抽奖的概率
- c++ - 如何显示星号 (***)
- sql-server - SQL Server 触发更新和数据库的新查询后,Entity Framework Core 不更新模型
- asp.net-mvc - 两个单独的页面具有相同的 URL
- angular - 如何将新值添加到数组中,该数组是角度地图中的值
- excel - 尝试从不同工作簿的数据创建图表时出现运行时错误 9
- google-chrome - 使用假网络摄像头和真正的 micro 运行 Chromium
- powershell - 如何只获取IP地址