给我写一个cmakelist demo,可以跨平台编译,包含一些已有的库
时间: 2023-08-31 11:31:04 浏览: 193
### 回答1:
cmake_minimum_required(VERSION 3.14)project(Demo)#编译
add_compile_options(-std=c++17)#头文件搜索
include_directories(./include)#添加库
add_subdirectory(libs)#源文件
add_subdirectory(src)#可执行文件
add_executable(demo main.cpp)#链接库
target_link_libraries(demo libs)
### 回答2:
以下是一个简单的CMakeLists.txt示例,它可以用于跨平台编译,并链接一些已有的库:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyApp)
# 设置编译器标准
set(CMAKE_CXX_STANDARD 11)
# 添加可执行文件
add_executable(MyApp main.cpp)
# 查找并添加所需的库
find_package(Threads REQUIRED)
target_link_libraries(MyApp PRIVATE Threads::Threads)
# 添加其他的已有库
target_link_libraries(MyApp PRIVATE YourLib1 YourLib2)
# 设置输出路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
```
这个示例假设你的项目中有一个名为`main.cpp`的源文件,该文件包含程序的入口点。你可以将这个CMakeLists.txt文件放置在与`main.cpp`文件相同的目录中。
此示例使用`CMake`的`find_package`命令来查找系统中已安装的`Threads`库,并使用`target_link_libraries`命令将其链接到项目中。
类似地,你可以使用`target_link_libraries`命令将其他已有的库(例如`YourLib1`和`YourLib2`)链接到项目中。
最后,使用`set(EXECUTABLE_OUTPUT_PATH ...)`命令设置可执行文件的输出路径。这个示例将可执行文件放置在`${CMAKE_BINARY_DIR}/bin`目录中。你可以根据自己的需求修改输出路径。
要编译项目,你可以使用以下命令行命令:
```
mkdir build
cd build
cmake ..
cmake --build .
```
这些命令将在`build`目录中生成所需的构建系统,并编译项目。编译完毕后,可执行文件将位于`build/bin`目录中。
### 回答3:
CMake是一个跨平台的构建工具,可以帮助我们生成不同平台的编译脚本。在这里,我为您提供一个简单的CMakeList示例,可以跨平台编译,并包含一些已有的库:
```cmake
cmake_minimum_required(VERSION 3.10) #指定CMake版本
project(MyProject) #设置项目名称
# 添加可执行文件,并指定源文件
add_executable(MyExecutable main.cpp)
# 添加一个库
add_library(MyLibrary mylib.cpp)
# 链接库到可执行文件
target_link_libraries(MyExecutable PRIVATE MyLibrary)
# 查找并包含已有的库
find_package(OpenCV REQUIRED) # 查找OpenCV库
if(OpenCV_FOUND)
include_directories(${OpenCV_INCLUDE_DIRS}) # 包含OpenCV头文件
target_link_libraries(MyExecutable PRIVATE ${OpenCV_LIBRARIES}) # 链接OpenCV库
endif()
```
在上面的示例中,我们通过`project`命令设置项目名称,然后使用`add_executable`命令添加一个可执行文件,并指定其源文件为`main.cpp`。接着,我们使用`add_library`命令添加一个名为`MyLibrary`的库,并将其与可执行文件进行链接。
在找到并包含已有的库时,我们使用`find_package`命令查找OpenCV库,并通过`include_directories`命令包含OpenCV的头文件路径。最后,我们通过`target_link_libraries`命令将OpenCV库链接到可执行文件中。
通过这个示例,您可以在CMakeList中添加更多的库,以满足您的项目需求,并实现跨平台的编译。
阅读全文