- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑: 已经发生了足够多的变化,我提出了一个新问题。 You can find it here .
我正在尝试使用 OCCI 通过 C++ 连接到 Oracle 12c。我将 CLion2016.1 与受支持的 Cygwin 版本一起使用。 Windows 7. 昨天(2016 年 3 月 29 日)下载了 Oracle 即时客户端(基本和 sdk)
注意:C:/Users/hunrt/libs
已添加到我的系统路径。
我只有一个 main.cpp
文件:
#include <occi.h>
using namespace oracle::occi;
int main()
{
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Environment::terminateEnvironment(env);
}
如果我使用这个 CMake 文件,我会收到以下错误。注释掉的 find_library() 调用是我试图让它工作的不同方式。我每次都收到相同的错误消息(我一次只使用一个)。
CMake 文件
cmake_minimum_required(VERSION 3.4)
project(Oracle)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
#find_library(OCCI NAMES oraociei12.lib oci.lib orannzsbb12.lib oraocci12.lib PATHS C:/Users/hunrt/libs)
find_library(OCCI NAMES oraociei12.lib oci.lib orannzsbb12.lib oraocci12.lib PATHS /cygdrive/c/Users/hunrt/libs)
#find_library(OCCI NAMES oraociei12 oci orannzsbb12 oraocci12 PATHS C:/Users/hunrt/libs)
#find_library(OCCI NAMES oraociei12.lib ociw32.lib orannzsbb12.lib oraocci12.lib PATHS C:\\Users\\hunrt\\libs)
set(SOURCE_FILES
src/main.cpp
include/occi.h)
add_executable(Oracle ${SOURCE_FILES})
target_link_libraries(Oracle ${OCCI})
错误
Error:The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
OCCI
linked by target "Oracle" in directory /cygdrive/c/Users/hunrt/ClionProjects/Oracle
如果我删除 find_library() 和 target_link_libraries() 调用,则会收到以下错误:
C:\Users\hunrt\.CLion2016.1\system\cygwin_cmake\bin\cmake.exe --build C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug --target Oracle -- -j 8
/cygdrive/c/Users/hunrt/.CLion2016.1/system/cygwin_cmake/bin/cmake.exe -H/cygdrive/c/Users/hunrt/ClionProjects/Oracle -B/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/make -f CMakeFiles/Makefile2 Oracle
make[1]: Entering directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
/cygdrive/c/Users/hunrt/.CLion2016.1/system/cygwin_cmake/bin/cmake.exe -H/cygdrive/c/Users/hunrt/ClionProjects/Oracle -B/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug --check-build-system CMakeFiles/Makefile.cmake 0
/cygdrive/c/Users/hunrt/.CLion2016.1/system/cygwin_cmake/bin/cmake.exe -E cmake_progress_start /cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug/CMakeFiles 2
/usr/bin/make -f CMakeFiles/Makefile2 CMakeFiles/Oracle.dir/all
make[2]: Entering directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
/usr/bin/make -f CMakeFiles/Oracle.dir/build.make CMakeFiles/Oracle.dir/depend
make[3]: Entering directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
cd /cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug && /cygdrive/c/Users/hunrt/.CLion2016.1/system/cygwin_cmake/bin/cmake.exe -E cmake_depends "Unix Makefiles" /cygdrive/c/Users/hunrt/ClionProjects/Oracle /cygdrive/c/Users/hunrt/ClionProjects/Oracle /cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug /cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug /cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug/CMakeFiles/Oracle.dir/DependInfo.cmake --color=
make[3]: Leaving directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
/usr/bin/make -f CMakeFiles/Oracle.dir/build.make CMakeFiles/Oracle.dir/build
make[3]: Entering directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
[ 50%] Linking CXX executable Oracle.exe
/cygdrive/c/Users/hunrt/.CLion2016.1/system/cygwin_cmake/bin/cmake.exe -E cmake_link_script CMakeFiles/Oracle.dir/link.txt --verbose=1
/usr/bin/c++.exe -std=c++14 -g -Wl,--enable-auto-import CMakeFiles/Oracle.dir/src/main.cpp.o -o Oracle.exe -Wl,--out-implib,libOracle.dll.a -Wl,--major-image-version,0,--minor-image-version,0
CMakeFiles/Oracle.dir/src/main.cpp.o: In function `main':
/cygdrive/c/Users/hunrt/ClionProjects/Oracle/src/main.cpp:7: undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*))'
/cygdrive/c/Users/hunrt/ClionProjects/Oracle/src/main.cpp:7:(.text+0x2d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*))'
/cygdrive/c/Users/hunrt/ClionProjects/Oracle/src/main.cpp:8: undefined reference to `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'
/cygdrive/c/Users/hunrt/ClionProjects/Oracle/src/main.cpp:8:(.text+0x3d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'
collect2: error: ld returned 1 exit status
CMakeFiles/Oracle.dir/build.make:97: recipe for target 'Oracle.exe' failed
make[3]: *** [Oracle.exe] Error 1
make[3]: Leaving directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
CMakeFiles/Makefile2:70: recipe for target 'CMakeFiles/Oracle.dir/all' failed
make[2]: *** [CMakeFiles/Oracle.dir/all] Error 2
make[2]: Leaving directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/Oracle.dir/rule' failed
make[1]: *** [CMakeFiles/Oracle.dir/rule] Error 2
make[1]: Leaving directory '/cygdrive/c/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
Makefile:121: recipe for target 'Oracle' failed
make: *** [Oracle] Error 2
我尝试过的其他事情
我尝试将 libs、dll 和 sym 文件放入项目中,与 CMakeLists.txt 文件位于同一目录中,但我收到相同的错误消息。
任何帮助表示赞赏。谢谢。
CMake 文件
cmake_minimum_required(VERSION 3.4)
project(Oracle)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
#set(CMAKE_PREFIX_PATH C:\\Users\\hunrt\\libs)
set(CMAKE_PREFIX_PATH /cygdrive/c/Users/hunrt/libs)
#find_library(OCCI NAMES oraociei12.lib oci.lib orannzsbb12.lib oraocci12.lib C:/Users/hunrt/libs)
find_library(OCCI NAMES oraociei12.lib oci.lib orannzsbb12.lib oraocci12.lib)
#find_library(OCCI NAMES oraociei12 oci orannzsbb12 oraocci12 PATHS C:/Users/hunrt/libs)
#find_library(OCCI NAMES oraociei12.lib ociw32.lib orannzsbb12.lib oraocci12.lib PATHS C:\\Users\\hunrt\\libs)
set(SOURCE_FILES
src/main.cpp
include/occi.h)
add_executable(Oracle ${SOURCE_FILES})
target_link_libraries(Oracle ${OCCI})
错误
Error:The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
OCCI
linked by target "Oracle" in directory /cygdrive/c/Users/hunrt/ClionProjects/Oracle
CMake 文件
cmake_minimum_required(VERSION 3.4)
project(Oracle)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
set(CMAKE_PREFIX_PATH C:\\Users\\admatt\\libs)
find_library(OCCI NAMES oraociei12.lib oci.lib orannzsbb12.lib oraocci12.lib)
set(SOURCE_FILES
src/main.cpp
include/occi.h)
add_executable(Oracle ${SOURCE_FILES})
target_link_libraries(Oracle ${OCCI})
使用上面相同的 main.cpp 我得到以下错误:
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" --build C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug --target Oracle -- -j 8
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -HC:\Users\hunrt\ClionProjects\Oracle -BC:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug --check-build-system CMakeFiles\Makefile.cmake 0
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Makefile2 Oracle
mingw32-make.exe[1]: Entering directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -HC:\Users\hunrt\ClionProjects\Oracle -BC:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug --check-build-system CMakeFiles\Makefile.cmake 0
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -E cmake_progress_start C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug\CMakeFiles 2
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Makefile2 CMakeFiles/Oracle.dir/all
mingw32-make.exe[2]: Entering directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Oracle.dir\build.make CMakeFiles/Oracle.dir/depend
mingw32-make.exe[3]: Entering directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -E cmake_depends "MinGW Makefiles" C:\Users\hunrt\ClionProjects\Oracle C:\Users\hunrt\ClionProjects\Oracle C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug C:\Users\hunrt\.CLion2016.1\system\cmake\generated\Oracle-6ad0652d\6ad0652d\Debug\CMakeFiles\Oracle.dir\DependInfo.cmake --color=
Scanning dependencies of target Oracle
mingw32-make.exe[3]: Leaving directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\Oracle.dir\build.make CMakeFiles/Oracle.dir/build
mingw32-make.exe[3]: Entering directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
[ 50%] Building CXX object CMakeFiles/Oracle.dir/src/main.cpp.obj
C:\MinGW\bin\g++.exe @CMakeFiles/Oracle.dir/includes_CXX.rsp -std=c++11 -g -o CMakeFiles\Oracle.dir\src\main.cpp.obj -c C:\Users\hunrt\ClionProjects\Oracle\src\main.cpp
[100%] Linking CXX executable Oracle.exe
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\Oracle.dir\link.txt --verbose=1
"C:\Program Files (x86)\JetBrains\CLion 2016.1\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\Oracle.dir/objects.a
C:\MinGW\bin\ar.exe cr CMakeFiles\Oracle.dir/objects.a @CMakeFiles\Oracle.dir\objects1.rsp
C:\MinGW\bin\g++.exe -std=c++11 -g -Wl,--whole-archive CMakeFiles\Oracle.dir/objects.a -Wl,--no-whole-archive -o Oracle.exe -Wl,--out-implib,libOracle.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\Oracle.dir\linklibs.rsp
CMakeFiles\Oracle.dir/objects.a(main.cpp.obj): In function `main':
C:/Users/hunrt/ClionProjects/Oracle/src/main.cpp:7: undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'
C:/Users/hunrt/ClionProjects/Oracle/src/main.cpp:8: undefined reference to `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'
collect2.exe: error: ld returned 1 exit status
CMakeFiles\Oracle.dir\build.make:100: recipe for target 'Oracle.exe' failed
mingw32-make.exe[3]: *** [Oracle.exe] Error 1
mingw32-make.exe[3]: Leaving directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
mingw32-make.exe[2]: *** [CMakeFiles/Oracle.dir/all] Error 2
CMakeFiles\Makefile2:69: recipe for target 'CMakeFiles/Oracle.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/Oracle.dir/rule] Error 2
mingw32-make.exe[2]: Leaving directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/Oracle.dir/rule' failed
mingw32-make.exe[1]: Leaving directory 'C:/Users/hunrt/.CLion2016.1/system/cmake/generated/Oracle-6ad0652d/6ad0652d/Debug'
Makefile:120: recipe for target 'Oracle' failed
mingw32-make.exe: *** [Oracle] Error 2
最佳答案
找不到库 OCCI。目前你通过了一条绝对路径,这不是要走的路。您应该使用 CMAKE_PREFIX_PATH
添加到库的路径。然后 find_library
将检查来自 CMAKE_PREFIX_PATH
的所有路径。
对于您的每个库 oraociei12.lib、oci.lib、oranzsbb12.lib、oraocci12.lib,您必须为其自己使用一个 find_library。
关于CMake 找不到适用于 C++ Oracle 应用程序的 OCCI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292869/
运行 pip install cmake 时出现上述错误在 alpine linux (WSL) 上。 完整错误: /home/user# pip install cmake Collecting c
我的项目依赖 mariadb-connector-c我正在尝试使用 cmake 自动化下载、构建和链接过程。 我目前将项目下载到一个目录中,然后尝试执行生成忍者文件并运行它们,但我根本无法运行 cma
我正在尝试像这样在 cmake 中执行 execute_process execute_process(COMMAND ${CMAKE_COMMAND} -P myScript.cmake 这仅在文件
我想知道如果我没有给它任何变量告诉它在哪里找到它,cmake 如何找到我的 llvm cmake 配置。 我是 LLVM 新手。我正在构建一个 Hello World LLVM pass。我在 Ubu
我正在开发一个使用 CMake 的项目。顶CMakeLists.txt文件包含以下行: cmake_minimum_required(VERSION 3.7.2) # Kittens will die
我正在使用 Meego 1.2 工具链使用 cmake 运行构建(长话短说)。这个特定的工具链需要使用 --sysroot 选项来查找它需要的任何库。 set (CMAKE_CXX_FLAGS "-f
我们有一些源代码处理工具,可以从多个“片段”生成原始汇编文件等内容。 当使用 make 中的这些工具时,我们可以通过让源处理工具发出“依赖文件”来确保最新的构建,就像 gcc 一样-MD 标志。 例如
如何在 MSYS2 中安装和配置“cmake”?我尝试安装以下 MSYS 包 我在运行任何 cmake 命令时都收到以下错误 '''CMakeLists.txt:5 (cmake_minimum_re
有没有办法在 CMake 中得到一个变量列表?具体来说,我想要做的是调用一个现有函数,该函数接受多个变量并检查它们的计算结果是否为 true。 在某些情况下,其中一些变量将是空列表(计算结果为 fal
我有两组测试(功能测试和单元测试),我希望能够指定通过 cmake 运行哪一组。 一组测试是我想通过“make test”运行的单元测试。 另一组测试是我想通过“制作功能测试”来运行的功能测试。 目前
我的目标是查看有关调用 g++ 的详细信息由 cmake 直接调用从命令行。我不关心 make 的输出就这个问题而言。 根据official FAQ和 the accepted answer on a
我有一个生成库的CMake项目。我已经编写了一个CMake脚本FindXXX.cmake来帮助我的图书馆的用户。这样,他们可以使用find_package(XXX)并获取所需的变量。到现在为止还挺好。
当我看到带有命名空间的 CMake 库时,它们总是在表单中Parent::Component . 如果我有一个足够大的库,那么该库的子部分可能包含组件。我想知道是否可以/适合做 ParentProje
CMake 变量和属性似乎完成了非常相似的事情,我一直无法理解它们之间的区别。 它们每个都有自己的文档部分,但两者都会影响构建系统,两者都是“预先存在的”,并且两者都可以基于其他 CMake 命令动态
我有一个包含多个子目录的 CMake 项目,例如: dir1 subdir11 subdir12 dir2 subdir21 subdir22 根 CMakeLists
如果您想将静态库链接到共享库或可执行文件,同时保持所有符号可见(例如,您可以稍后打开它以找到它们),在 Linux/BSD 上执行此操作的一种非可移植方式是使用标志-Wl,--whole-archiv
CMake 自动创建一个 FooTarget.cmake文件例如添加 install(EXPORT FooTargets FILE FooTargets.cmake NAMESPACE Foo
在CMake中,ELSE和ENDIF控制流函数将表达式作为参数。根据文档,这些是optional。那么这些目的是什么?仅仅是为了维护目的而使原始IF表达式更清晰,还是提供某些功能? 最佳答案 正如您所
我是 cmake 的新手,我发现它非常令人沮丧。我试图在构建运行时评估的文件路径中使用通配符,而不是在生成构建时。 我创建了一个构建,它使用 SWIG 为某些 C++ 代码生成 Java 包装器。我可
我可能在谷歌上搜索错误,但我无法找到 .cmake 文件的用途。 我刚刚偶然发现了一个我必须使用的项目的 CMake 工具,我很难理解它是如何工作的。我明白在包含 CMakeLists.txt 的目录
我是一名优秀的程序员,十分优秀!