好吧,我是CMake的新手。 我有以下文件结构
haze_removal
|---build
|---bin
| |--Test
| |--CMakeLists.txt
|---lib
| |--libtools.so
|---include
| |--tools.hpp
|---test
| |--main.cpp
| |--CMakeLists.txt
|---src
| |--tools.cpp
| |--CMakeLists.txt
|---CMakeLists.txt
libtools.so是从../src/tools.cpp
构建的。我使用以下cmake命令在../build
中构建整个项目:
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
测试是从../test/main.cpp
构建的
我成功地建立了这个项目。但是当我使用gdb ./Test
调试Test时,我无法跳过libtools.so的函数。
这些是来自不同目录的CMakeLists.txt
。
haze_removal/
cmake_minimum_required(VERSION 2.8)
project(haze_removal)
# find needed package
find_package(OpenCV REQUIRED)
# library directory
add_subdirectory(src)
# test
add_subdirectory(test)
../src/
# generate dynamic library
# add source file, include directories
aux_source_directory(. TOOLS_SRC)
include_directories(${PROJECT_SOURCE_DIR}/include)
# generate
add_library(tools SHARED ${TOOLS_SRC})
# set output directory and lib's name
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
set_target_properties(tools PROPERTIES OUTPUT_NAME "tools")
# link library
target_link_libraries(tools ${OpenCV_LIBS})
../test/
# add source file, include directories, link directories
aux_source_directory(. EXE_SRC)
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
# generate
add_executable(Test ${EXE_SRC})
# set output directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# link libraries
target_link_libraries(Test ${OpenCV_LIBS} libtools.so)
我的问题是如何调试libtools中的函数。
答案 0 :(得分:0)
好吧,即使我设置$(function() {
$("form").on("submit",function(e) {
var val = $("[name='not_robot'"].val();
if (isNaN(val) || !parseInt(Number(val)) == val || isNaN(parseInt(val, 10)) e.preventDefault();
}
}
,我发现为什么我无法进入动态库。因为在我将构建模型设置为Debug之前,我曾经设置CMAKE_BUILD_TYPE=Debug
。更改构建模型后,我没有删除CMAKE_BUILD_TYPE=Release
目录中的文件。
我不知道上述解释是否正确,但我确实解决了我的问题。
THX!