我无法将静态库添加到项目中。
我具有以下项目结构:
+ root/
+ CmakeLists.txt // Include all projects
+ Base/
| + foo.cpp
| + CmakeLists.txt
+ App1/
| + app1.cpp
| + CmakeLists.txt // Requires Base lib
+ App2/
| + app2.cpp
| + CmakeLists.txt // Requires Base lib
我尝试通过以下方式进行操作:
Base
CmakeLists.txt:
cmake_minimum_required(VERSION 3.10.2)
add_library(Base STATIC foo.cpp)
App1
CmakeLists.txt:
cmake_minimum_required(VERSION 3.10.2)
project(App1)
add_executable(${CMAKE_PROJECT_NAME} app1.cpp)
include(../Base/CMakeLists.txt)
但是我有以下错误:
CMake Error at C:/DPA/Base/CMakeLists.txt:3 (add_library):
Cannot find source file:
foo.cpp
如何正确设置库以包含在所有项目中?
答案 0 :(得分:2)
这不是您使用这种目录结构的方式。相反,在>>> import pandas as pd
>>> d = {'col1': [1, 2], 'col2': [3, 4]}
>>> df = pd.DataFrame(data=d)
>>> print(df)
col1 col2
0 1 3
1 2 4
>>> df['sum'] = df.col1 + df.col2
>>> print(df)
col1 col2 sum
0 1 3 4
1 2 4 6
中,使用
App1/CmakeLists.txt
这声明add_executable(App1 app1.cpp)
target_link_libraries(App1 Base)
依赖于App1
并应与该库链接。 “链接”意味着在构建Base
源时,不仅将正确的参数传递给链接器,还将传播包含标志和其他选项传播给编译器。
如果您打算仅构建项目的一部分,则可以在App1
中使用附加参数,即
add_executable
这样,当您构建默认目标时,add_executable(App1 EXCLUDE_FROM_ALL app1.cpp)
将不会成为构建的一部分。您仍然可以手动/根据要求构建它,例如使用makefile时,
App1
将构建可执行文件make App1
及其所需的一切。