使用外部库的 CMake 'no rule to make target'
CMake 'no rule to make target' with external library
我正在尝试 link 我的一个程序 libevent。我正在使用 CMake 作为构建系统。我的项目结构如下:
my_project
├── CMakeLists.txt
├── README.md
├── build
│ └── Build stuff
└── software
├── README.md
├── CMakeLists.txt
├── include
├── libraries
│ ├── libevent
│ │ └── CMakeLists.txt
│ └── anotherlibrary
│ └── CMakeLists.txt
├── prog1
│ ├── CMakeLists.txt
├── prog2
│ ├── CMakeLists.txt
└── prog3
└── CMakeLists.txt
prog1 的 CMakeList.txt(需要 linked 到 libevent 的那个)
cmake_minimum_required(VERSION 2.6)
project (prog1)
file(GLOB prog1
"*.h"
"*.cpp"
)
include_directories("${PROJECT_INCLUDE_DIR}/libevent/include")
add_executable(${PROJECT_NAME} ${prog1})
target_link_libraries(${PROJECT_NAME} event_core)
但是当我构建项目时,make 找不到libevent 构建的库。它搜索:libraries/libevent/lib/libevent_core.a
这是错误的路径,因为 libevent 将其构建在内部库中:my_project/build/software/libraries/libevent/lib/libevent_core.a
如何让 CMake 在那里搜索库?我已经将以下行添加到我的 Cmake 文件中,但这不起作用
link_directories(/my_project/build/software/libraries/libevent/lib/)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/bin)
有什么建议吗?
我通过删除 build
目录中的内容并在 build
目录中重新 运行 cmake ..
自行解决了这个问题。
我认为 CMake 不知何故不知道我所做的更改,并且通过重建项目解决了问题。
我正在尝试 link 我的一个程序 libevent。我正在使用 CMake 作为构建系统。我的项目结构如下:
my_project
├── CMakeLists.txt
├── README.md
├── build
│ └── Build stuff
└── software
├── README.md
├── CMakeLists.txt
├── include
├── libraries
│ ├── libevent
│ │ └── CMakeLists.txt
│ └── anotherlibrary
│ └── CMakeLists.txt
├── prog1
│ ├── CMakeLists.txt
├── prog2
│ ├── CMakeLists.txt
└── prog3
└── CMakeLists.txt
prog1 的 CMakeList.txt(需要 linked 到 libevent 的那个)
cmake_minimum_required(VERSION 2.6)
project (prog1)
file(GLOB prog1
"*.h"
"*.cpp"
)
include_directories("${PROJECT_INCLUDE_DIR}/libevent/include")
add_executable(${PROJECT_NAME} ${prog1})
target_link_libraries(${PROJECT_NAME} event_core)
但是当我构建项目时,make 找不到libevent 构建的库。它搜索:libraries/libevent/lib/libevent_core.a
这是错误的路径,因为 libevent 将其构建在内部库中:my_project/build/software/libraries/libevent/lib/libevent_core.a
如何让 CMake 在那里搜索库?我已经将以下行添加到我的 Cmake 文件中,但这不起作用
link_directories(/my_project/build/software/libraries/libevent/lib/) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/lib) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build/bin)
有什么建议吗?
我通过删除 build
目录中的内容并在 build
目录中重新 运行 cmake ..
自行解决了这个问题。
我认为 CMake 不知何故不知道我所做的更改,并且通过重建项目解决了问题。