首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Cmake构建可执行和可链接的共享库

使用Cmake构建可执行和可链接的共享库
EN

Unix & Linux用户
提问于 2018-11-02 08:17:06
回答 1查看 6.6K关注 0票数 2

如何使用executable shared-library创建cmake

类似于:

libtest.so ::可链接共享库libtest.so ::可执行

注: gcc/g++选项是已知实现相同的(https://unix.stackexchange.com/a/223411/152034)。但是解决方案需要cmake方式

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-11-02 08:17:06

注意:与此有关的第一个信息是,似乎有一个与cmake相关的开放问题。因此,这可以被认为是一种间接的解决办法来实现同样的目标。

现在,使用cmake进行演示。

test.cpp

代码语言:javascript
复制
#include                   

void sayHello (char *tag) {         
    printf("%s: Hello!\n", tag);    
}                                

int main (int argc, char *argv[]) { 
    sayHello(argv[0]);              
    return 0;                       
}

测试/测试测试.test

代码语言:javascript
复制
#include                   

extern void sayHello (char*);

int main (int argc, char *argv[]) { 

    printf("\nNow Inside test-test !\n");    

    sayHello(argv[0]);              
    return 0;                       
}

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.5)

project(pie_test)

#shared-lib as executable
add_library(${PROJECT_NAME} SHARED
            test.cpp
)
target_compile_options(${PROJECT_NAME} PUBLIC "-pie")
target_link_libraries(${PROJECT_NAME} "-pie -Wl,-E")
set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE 1)

#executable linking to the executable-shared-library
add_executable(test_test
               ttest/test_test.cpp
)
target_link_libraries(test_test pie_test)
set_property(TARGET test_test PROPERTY POSITION_INDEPENDENT_CODE 1)

build.sh

代码语言:javascript
复制
#!/bin/bash

rm -rf build
mkdir build

cd build
cmake .. #--debug-output

make VERBOSE=1
echo "Done!"
echo ""

gcc参考-选项这里

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/479333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档