如何使用executable shared-library创建cmake?
类似于:
libtest.so ::可链接共享库libtest.so ::可执行
注: gcc/g++选项是已知实现相同的(https://unix.stackexchange.com/a/223411/152034)。但是解决方案需要cmake方式
发布于 2018-11-02 08:17:06
注意:与此有关的第一个信息是,似乎有一个与cmake相关的开放问题。因此,这可以被认为是一种间接的解决办法来实现同样的目标。
现在,使用cmake进行演示。
test.cpp
#include
void sayHello (char *tag) {
printf("%s: Hello!\n", tag);
}
int main (int argc, char *argv[]) {
sayHello(argv[0]);
return 0;
}测试/测试测试.test
#include
extern void sayHello (char*);
int main (int argc, char *argv[]) {
printf("\nNow Inside test-test !\n");
sayHello(argv[0]);
return 0;
}CMakeLists.txt
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
#!/bin/bash
rm -rf build
mkdir build
cd build
cmake .. #--debug-output
make VERBOSE=1
echo "Done!"
echo ""gcc参考-选项这里。
https://unix.stackexchange.com/questions/479333
复制相似问题