在我的
通过手动构建代码
即使我已经明确地描述了它在我的文件系统中的位置,但CMake似乎找不到这个头文件。根据
main.cpp
文件顶部,#include <sqlite3.h>
处抛出了No such file or directory
的错误。通过手动构建代码
g++ -I"C:\Libraries\64_bit\SQLite3\include\" -L"C:\Libraries\64_bit\SQLite3\bin\" -lsqlite3 main.cpp Class1.cpp Class1.h Class2.cpp Class2.h -o main
没有出现任何错误。即使我已经明确地描述了它在我的文件系统中的位置,但CMake似乎找不到这个头文件。根据
target_include_directories()
的文档,这应该足够了:
为什么指定的包含目录可以是绝对路径或相对路径。多次调用同一个函数会按照调用的顺序添加项目。
target_include_directories()
函数不能找到这些头文件,即使我已经提供了精确的绝对路径?
我正在64位Windows 10机器上开发,并使用MinGW-w64 g++
编译器进行编译。
- 我下载了64位Windows预编译二进制文件
sqlite3.dll
,并将其存储在本地的C:\Libraries\64_bit\SQLite3\bin\
中。 - 为了访问SQLite C++函数,我还下载了SQLite3的汇编源代码,并将所有源文件存储在
C:\Libraries\64_bit\SQLite3\include\
中。
CMakeLists.txt
中,我已经包含了SQLite3的头文件并链接了sqlite3
,如下所示:cmake_minimum_required(VERSION 3.7)
project(My_Project)
set(CMAKE_CXX_STANDARD 11)
set(INCLUDE_DIRS C:\\Libraries\\64_bit\\SQLite3\\include\\)
set(LIBRARIES sqlite3.dll)
# My project's source code
set(SOURCE_FILES main.cpp Class1.cpp Class1.h Class2.cpp Class2.h)
add_executable(My_Project ${SOURCE_FILES})
# For compiler warnings
target_compile_options(My_Project PRIVATE -Wall)
# Including SQLite3's headers
target_include_directories(My_Project PRIVATE ${INCLUDE_DIRS})
# Linking against sqlite3.dll
target_link_libraries(My_Project ${LIBRARIES})
/
作为目录分隔符。你可以尝试使用它来代替\\
吗? - Angew is no longer proud of SO